Apache camel 使用ApacheCamel在两个bean之间进行路由时出现问题
我的骆驼路线如下Apache camel 使用ApacheCamel在两个bean之间进行路由时出现问题,apache-camel,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>
<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不定期地激活时发送消息。但是,我认为问题是camel正在重新启动
一旦recv bean接收到消息并重新发送相同的消息(一秒钟内发送一百条消息),路由就会发生变化
当send方法被激活并且创建了一条新消息(即JMS队列应该具有唯一的消息)时发送消息。我如何做到这一点
可能的解决办法是:
中来执行此操作吗
sanre6您不应该有第一条路线。当您这样做时,您会告诉Camel不断调用该bean上的send方法并对其进行路由。这就是为什么你每秒会看到100条消息
相反,您应该在bean代码中使用一些camelapi,并将消息发送到JMS队列。例如,使用ProducerTemplate。我认为我可以一次性使用SpringXML或JavaDSL。所以,如果我像template.sendBody(“activemq:MyQueue”,“world!”)一样使用Producertemplate;。。。。那就意味着我必须使用JavaDSL,对吗?如何使用SpringXML实现这一点。感谢您对send()方法的Java代码的回答。这是将消息发送给Camel的地方,因为调用send()方法时会发生这种情况。有没有一种方法可以直接在camelcontext xml文件中执行,而不使用java代码中的注释?您可以隐藏中间件。在你的另一个问题中看到我的答案。