繁体   English   中英

RabbitMQ(或Spring云流)可以独占消息吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM