Apache Camel Forwarding和消息顺序

时间:2014-08-28 14:57:15

标签: apache-camel

我正在调查以查看Camel是否可以满足以下要求。要求是:传入队列上的消息顺序应与传出队列上的消息顺序相匹配。

我认为问题归结为Camel如何将消息从传入队列转发到传出队列的内部结构。

在简单示例中,路线如下所示:

from("incomingQueue").to("outgoingQueue);

和incomingQueue有4条消息开始(按此顺序到达):消息1,消息2,消息3,消息4.

是否有保证或选项告诉Camel以保持原始收货顺序的方式转发邮件?因此,如果侦听器正在侦听传出队列,它将接收消息1,然后是消息2,然后是消息3,然后是消息4(假设一个线程接收器)。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

队列先进先出。因此,在单线程进程中,队列#2将以与队列#1相同的顺序接收消息。如果您愿意,大多数端点都可以将消费者减少到1。

如果您想让您的消费者数量增加,那么您可以在将消息放入队列#2之前使用resequencer。在将消息放入队列#1之前,您可以使用序列号填充标头,然后队列#2之前的重定序器将确保它们被重新排序

答案 1 :(得分:1)

如果您在路线上有单线程消费者,那么它会在订单中的队列之间一次移动一条消息。