【发布时间】:2016-12-08 11:46:07
【问题描述】:
我正在尝试:
- 读取数据库
- 发送 AMQP 消息
- 更新数据库
如果发送消息失败,更新数据库也应该失败。如果更新数据库失败,消息将被发送多次。
<int:channel id="output-channel" />
<int-jdbc:inbound-channel-adapter query="SELECT MAX(d) AS d FROM a" update="UPDATE a SET d=1 WHERE d=367"
channel="output-channel" data-source="dataSource">
<int:poller fixed-rate="50000" max-messages-per-poll="1">
<int:transactional transaction-manager="dataSourceTransactionManager2" />
</int:poller>
</int-jdbc:inbound-channel-adapter>
<int-amqp:outbound-channel-adapter channel="output-channel" exchange-name="nameex" amqp-template="rabbitTemplate" />
我可以通过此设置看到,在更新失败时,根本不会发送消息。似乎在更新后调用 outbound-channel-adapter。
还有一个问题 - 每次我知道数据库中有什么东西时,是否有可能以编程方式触发入站通道适配器,但不要等待轮询器太久?
谢谢!
【问题讨论】:
-
请粘贴一些有关jdbc入站适配器故障的异常信息。
-
我创建的这个更新查询仅用于测试目的并且抛出的异常是重复的主键。我希望这会被抛出,但我也希望将消息发送到 amqp,但事实并非如此。
标签: java spring jdbc spring-integration spring-amqp