Apache camel ApacheCamel:轮询消费者
我是Apache Camel的新手,我试图在一个简单的项目中理解和使用轮询消费者EIP,但我觉得有点迷茫。。 有人能帮我解释一下,甚至举个小例子吗 任何帮助都将不胜感激Apache camel ApacheCamel:轮询消费者,apache-camel,polling,producer-consumer,Apache Camel,Polling,Producer Consumer,我是Apache Camel的新手,我试图在一个简单的项目中理解和使用轮询消费者EIP,但我觉得有点迷茫。。 有人能帮我解释一下,甚至举个小例子吗 任何帮助都将不胜感激 提前感谢对于大多数用例,您可以通过在路由中的from()子句中定义消费者来创建消费者 from("activemq:inbox").to(new MyProcessor()); 但是,您也可以编写自己的POJO轮询使用者逻辑,以便对使用者逻辑进行更多控制……只需使用计时器定期启动它,然后调用receive()方法,如下所示:
提前感谢对于大多数用例,您可以通过在路由中的
from()
子句中定义消费者来创建消费者
from("activemq:inbox").to(new MyProcessor());
但是,您也可以编写自己的POJO轮询使用者逻辑,以便对使用者逻辑进行更多控制……只需使用计时器定期启动它,然后调用receive()
方法,如下所示:
from("timer://foo?period=5000").bean(MyBean, "processQueue");
public void processQueue() {
while (true) {
// receive the message from the queue, wait at most 3 sec
String msg = consumer.receiveBody("activemq:inbox", 3000, String.class);
if (msg == null) {
// no more messages in queue
break;
}
// do something with body
}
}
有关更多详细信息,请参阅文档:Camel支持使用PollingConsumer接口从EIP模式实现轮询消费者,该接口可以通过Endpoint.createPollingConsumer()方法创建 这也称为同步接收器,因为接收器线程阻塞,直到收到消息为止。我们称之为轮询消费者,因为接收者轮询一条消息,处理它,然后轮询另一条消息。为了方便起见,消息传递API通常提供一个receive()方法,该方法在消息传递之前一直阻塞,此外还有receiveNoWait()和receive(0)等方法,这些方法在没有消息可用时会立即返回 乙二醇 ActiveMq消费者
<from uri="activemq:someQueue"/>
<to uri="direct:somepath"/>
<from uri="timer://foo?period=5000"/>
<to uri="direct:somepath"/>
定期消费者
<from uri="activemq:someQueue"/>
<to uri="direct:somepath"/>
<from uri="timer://foo?period=5000"/>
<to uri="direct:somepath"/>
有关的更多信息,欢迎使用StackOverflow!你已经读过这本书了吗?你有什么问题?你试过什么?你可以看看
文件组件
看看它是如何工作的:非常感谢:)我现在明白了。问题是我对spring和Camel还很陌生,只是找不到足够的资源。我正在尝试《骆驼在行动》这本书,但我发现它有时有点复杂。无论如何,谢谢你的回答,这对我真的很有帮助:)