我正在调查以查看Camel是否可以满足以下要求。要求是:传入队列上的消息顺序应与传出队列上的消息顺序相匹配。
我认为问题归结为Camel如何将消息从传入队列转发到传出队列的内部结构。
在简单示例中,路线如下所示:
from("incomingQueue").to("outgoingQueue);
和incomingQueue有4条消息开始(按此顺序到达):消息1,消息2,消息3,消息4.
是否有保证或选项告诉Camel以保持原始收货顺序的方式转发邮件?因此,如果侦听器正在侦听传出队列,它将接收消息1,然后是消息2,然后是消息3,然后是消息4(假设一个线程接收器)。
感谢您的帮助。
答案 0 :(得分:2)
队列先进先出。因此,在单线程进程中,队列#2将以与队列#1相同的顺序接收消息。如果您愿意,大多数端点都可以将消费者减少到1。
如果您想让您的消费者数量增加,那么您可以在将消息放入队列#2之前使用resequencer。在将消息放入队列#1之前,您可以使用序列号填充标头,然后队列#2之前的重定序器将确保它们被重新排序
答案 1 :(得分:1)
如果您在路线上有单线程消费者,那么它会在订单中的队列之间一次移动一条消息。