我必须从数据库中读取行并将行传递给服务激活器
在rowmapper的帮助下发送带有我们自己的框架的邮件,我们可以实现,问题是我们需要使用动态状态和errorstackstrace更新相应行的列,具体取决于服务激活方法的成功或失败。
<int-jdbc:inbound-channel-adapter id="emailReqestChannel"
query="select * from email_requests where email_request_status = 'NEW'"
update="update email_requests set email_request_status = 'SUCCESS' where email_request_id in (:email)"
max-rows-per-poll="10"
data-source="dataSource" row-mapper="emailRequestRowMapper">
<int:poller fixed-rate="1000">
<int:transactional />
</int:poller>
</int-jdbc:inbound-channel-adapter>
<int:service-activator input-channel="emailReqestChannel" ref="emailRequestMessageHandler" />
<bean id="jdbcMessageHandler"
class="com.company.selfservice.jdbc.handler.JdbcMessageHandler" />
<bean id="emailRequestMessageHandler"
class="com.company.selfservice.jdbc.handler.EmailRequestMessageHandler" />
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<int:poller default="true" fixed-rate="10000"/>
<int:channel id="dataChannel">
<int:queue />
</int:channel>
<int:channel id="emailReqestChannel">
<int:queue />
</int:channel>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.gjt.mm.mysql.Driver" />
<property name="url" value="${database.connection_url}" />
<property name="username" value="${database.user}" />
<property name="password" value="${database.password}" />
</bean>
<bean id="emailRequestRowMapper"
class="com.company.selfservice.jdbc.handler.EmailRequestRowMapper" />
答案 0 :(得分:0)
如果故事是关于dynamic status and errorstackstrace depending success or failure
的,那么您不应该使用update
中的<int-jdbc:inbound-channel-adapter>
,但是真的考虑使用<int-jdbc:outpbund-channel-adapter>
,那里有你可以针对请求消息解析查询参数:https://docs.spring.io/spring-integration/docs/5.0.4.RELEASE/reference/html/jdbc.html#jdbc-outbound-channel-adapter