使用 apache Camel 在两个 bean 之间路由的问题
-
27-09-2019 - |
题
我的骆驼路线如下
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring" >
<route>
<from uri="bean:SendClass?method=send" />
<to uri="jms:MyQueue" pattern="InOnly" />
</route>
<route>
<from uri="jms:MyQueue" />
<to uri="bean:recvClass?method=recv" />
</route>
</camelContext>
当通过第三方POJO激活时,发送方法会在某个不规则的间隔内发送消息。但是,一旦Recv Bean收到消息并将相同的消息重新启动,我认为骆驼的问题是骆驼正在重新启动路线。
可能的解决方案是:
- 是它们的一些属性,我可以将其放入
<from.../>
去做这个 ? - 编写一个处理器来过滤发送 bean 和队列之间的唯一消息。
- 他们是否有其他方式在不使用的情况下路由它
<from uri="bean:..." />
谢谢Sanre6
解决方案
你不应该有第一条路线。当您这样做时,您告诉 Camel 不断调用该 bean 上的 send 方法并路由它。这就是为什么你每秒会看到数百条消息。
相反,您应该在 bean 代码中使用一些 Camel API 并将消息发送到 JMS 队列。例如使用 ProducerTemplate。
不隶属于 StackOverflow