我有一个rabbitmq队列和两个spring cloud spring消费者。我希望每个消费者都能按顺序处理消息。
我认为当consumer1发送确认时,consumer2会收到第二条消息,所以我预计message1,message2在每个消费者中都是按顺序处理的。
-------------------- time pass ------------------------>
consumer1: message1 message3
consumer2: message2 message4但事实并非如此。consumer1、consumer2同时接收message1、message2和process。
-------------------- time pass ------------------------>
consumer1: message1 message3
consumer2: message2 message4有没有办法让spring云流独占消费消息?
发布于 2017-07-13 21:25:22
亚马逊( RabbitMQ )不支持这一点;每个消费者都会收到prefetch消息。
它确实支持排他性消费者,但这意味着consumer1将获得所有消息,而consumer2只有在consumer1死亡时才会获得消息。
然而,Spring Cloud Stream目前没有提供属性来设置该选项。
发布于 2017-07-13 21:35:32
您将不得不以不同的方式对队列进行建模。例如通过具有恰好具有一个消费者协调器的“输入”队列。这个消费者将把消息转发到“工作”队列,在这个队列中,consumer1+2以循环的方式等待和接收工作。
然后,它们将向第三个队列上的协调器发出完成信号,这将使其恢复将单个消息中继到工作队列。
https://stackoverflow.com/questions/45072016
复制相似问题