Apache骆驼式插入数据从Postgre到AMQ队列.从而产生无限循环



我想在postgre表中选择所有数据并将其发送给Amq。这就是我迄今为止所做的。

<route id="insert">
<from uri="sql:SELECT * FROM mytable" />
<convertBodyTo type="java.lang.String" />
<transform>
<simple> ${in.body} </simple>
</transform>
<log message="${in.body}" />
<to uri="amqp:queue:testingQueue" />
<log message="${in.body}" />
</route>

这导致了无限循环。骆驼式路由不断选择表并发送到队列。我已经尝试使用controlbus组件,但使用控制总线只在队列中插入2个数据。我如何在XML中做到这一点?

您的目标是"选择特定postgre表中的所有数据并将其发送到Amqp(只做一次("。在当前设置下,当从端点直接放入sql组件时,很难控制路由的行为。

您不应该从端点直接放入sql组件,而是应该找到方法确保路由只触发一次,然后从postgre收集DB记录。要做到这一点,最简单的方法是使用timer组件触发路由一次,使用pollenrich触发DB调用一次。

<from uri="timer://timerId?repeatCount=1" />
<pollEnrich>
<constant>sql:SELECT * FROM mytable</constant>
</pollEnrich>

参考:Camel定时器组件,Camel pollrich选项

最新更新