Spring 集成 - 读取 JDBC、发送 AMQP 消息并提交

Spring integration - read JDBC, send AMQP message and COMMIT

我正在尝试:

  1. 读取数据库
  2. 发送 AMQP 消息
  3. 更新数据库

如果消息发送失败,更新数据库也应该失败。如果更新数据库失败,将多次发送消息。

<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" />

我在这个设置中看到的是,在更新失败时,根本不会发送消息。似乎调用出站通道适配器是在更新之后。

还有一个问题 - 是否有可能每次我知道数据库中有内容时以编程方式触发入站通道适配器,但不要等待轮询器太久?

谢谢!

要在 amqp 发送后进行更新,请将 outputChannel 设为 <publish-subscribe-channel/>

订阅 amqp 出站适配器和 JDBC 出站适配器(或网关)。为 amqp 设置 order="1",为 JDBC 设置 order="2"

1) 使用 jdbc 出站网关代替适配器。

<int-jdbc:outbound-gateway>

2) 松散轮询器并创建无队列通道。