使用apache camel在两个bean之间路由的问题

时间:2010-10-02 12:09:08

标签: apache-camel

我的骆驼路线如下:

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

send方法在第三方Pojo以不规则的间隔激活时发送消息。但是,我认为问题是驼峰重启 一旦recv bean收到消息并重新发送相同的消息(一秒钟就有数百个消息)的路由。我真的想要它 当send方法被激活并且创建了一条新消息时发送消息(即JMS队列应该有唯一消息)。我这样做吗?

可能的解决方案是:

  1. 是他们可以放在<from.../>内的一些属性吗?
  2. 编写处理器以过滤发送bean和队列之间的唯一消息。
  3. 是否有其他方式在不使用<from uri="bean:..." />
  4. 的情况下路由它

    感谢 sanre6

1 个答案:

答案 0 :(得分:2)

你不应该有第一条路线。当你这样做时,你告诉Camel不断调用该bean的send方法并进行路由。因此,为什么你每秒看到100条消息。

相反,您应该在bean代码中使用一些Camel API并将消息发送到JMS队列。例如,使用ProducerTemplate。