[英]Consume messages from RabbitMQ queue using spring cloud stream 3.0+
[英]Can RabbitMQ (or spring cloud stream) consume messages exclusively?
我有一个rabbitmq队列和两个春天的云泉消费者。 我希望每个消费者按顺序处理消息。
我认为当consumer1发送ack时,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云流是否有办法专门使用消息?
RabbitMQ(AMQP)不支持; 每个消费者都会收到prefetch
消息。
它确实支持独占消费者,但它意味着consumer1将获得所有消息,而consumer2只会在consumer1消亡时获取消息。
但是,Spring Cloud Stream当前不提供用于设置该选项的属性。
你必须以不同的方式为你的队列建模。 例如,通过拥有一个“传入”队列,该队列只有一个消费者协调员。 此消费者将消息中继到“工作”队列,其中,consumer1 + 2正在等待并以循环方式接收工作。
然后,它们将在第三个队列上向协调器发出完成信号,这将导致它恢复将单个消息中继到工作队列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.