Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache camel ApacheCamel:轮询消费者_Apache Camel_Polling_Producer Consumer - Fatal编程技术网

Apache camel ApacheCamel:轮询消费者

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()方法,如下所示:

我是Apache Camel的新手,我试图在一个简单的项目中理解和使用轮询消费者EIP,但我觉得有点迷茫。。 有人能帮我解释一下,甚至举个小例子吗

任何帮助都将不胜感激
提前感谢

对于大多数用例,您可以通过在路由中的
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还很陌生,只是找不到足够的资源。我正在尝试《骆驼在行动》这本书,但我发现它有时有点复杂。无论如何,谢谢你的回答,这对我真的很有帮助:)