首页 文章

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

提问于
浏览
1

我有一个rabbitmq队列和两个 Spring 天的 Cloud 泉消费者 . 我希望每个消费者按顺序处理消息 .

我认为当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 Cloud 流是否有办法专门使用消息?

2 回答

  • 1

    RabbitMQ(AMQP)不支持;每个消费者获得 prefetch 消息 .

    它确实支持独占消费者,但它意味着consumer1将获得所有消息,而consumer2只会在consumer1消亡时获取消息 .

    但是,Spring Cloud Stream当前不提供用于设置该选项的属性 .

  • 2

    你必须以不同的方式为你的队列建模 . 例如 . 通过拥有一个只有一个消费者协调员的“传入”队列 . 该消费者将消息中继到“工作”队列,其中消费者1 2正在等待并以循环方式接收工作 .

    然后,它们将在第三个队列上向协调器发出完成信号,这将导致它恢复将单个消息中继到工作队列 .

相关问题