Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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
Java 在Apache camel中,端点之间会丢失消息吗?_Java_Apache Camel - Fatal编程技术网

Java 在Apache camel中,端点之间会丢失消息吗?

Java 在Apache camel中,端点之间会丢失消息吗?,java,apache-camel,Java,Apache Camel,我有如下配置的驼峰路线: <route id="route1" autoStartup="true"> <from uri="response-jms:queue:MYQUEUE?concurrentConsumers=10" /> <to uri="bean:processorOne?method=process" /> <to uri="bean:processorTwo?method=process" /> <

我有如下配置的驼峰路线:

 <route id="route1" autoStartup="true">
    <from uri="response-jms:queue:MYQUEUE?concurrentConsumers=10" />
    <to uri="bean:processorOne?method=process" />
    <to uri="bean:processorTwo?method=process" />
 </route>


我想我有时会遇到这样的情况,processorTwo不会对消息执行。只有在交通繁忙时才会发生这种情况。如果processorTwo比processorOne慢,Apache会丢弃消息吗?如果是,处理此问题的标准方法是什么?

即使
processorTwo
processorOne
慢,也不应丢弃消息。您可以尝试将输出消息从
processorOne
推送到另一个队列,然后使用该队列中的
processorTwo
使用消息。这将使您能够更好地控制如何处理您的消息。它不应该“丢失”任何消息,因为消息只是从路由中消失。除非您运行的容器死亡,否则消息总是会发送到某个地方。如果processorOne中发生异常,它将中断路由。您可以检查以确保没有抛出任何错误吗?谢谢您的回复。我知道processOne已成功完成丢失消息的处理。如果ProcessorTwo很慢,消息是如何生成的?Camel必须创建一些隐式队列或其他东西,对吗?如果隐式队列已满,是否存在死信队列?默认情况下,您的路由是单线程的。在当前消息离开路由之前,新消息不会在路由中被使用(通过遍历整个路由或错误导致其中断)。如果processorOne花费的时间太长,路由将只等待消息完成,然后再使用来自jms路由的更多消息。感谢回复David。这是否意味着如果Process2很慢,则processOne在Process2准备接收另一条消息之前不会接收消息?有10个消费者,所以我猜好像有10对ProcessOne/ProcessTwo?当Process2完成时,processOne是否可以从队列中拾取另一条消息?