繁体   English   中英

Spring Boot RabbitMQ-如何确保多个使用者一次消费一条消息

[英]Spring Boot RabbitMQ - How to make sure multiple consumers consume messages one at a time

我正在使用Spring Boot + RabbitMQ服务器,对于我的一个队列,我希望多个使用者连续使用消息,即

Expexted Behaviour consumer1: message1 xxxxxxxx message3 xxxxxxxx consumer2: xxxxxxxx message2 xxxxxxxx message4

现在,我正在使用以下方法来实现排他性:

@RabbitListener(queues = Constants.QUEUE_TOPIC, exclusive = true)

但这一次只允许一个活跃的使用者,因此我的功能没有中断,但可伸缩性却没有。

请提出正确的方法。 谢谢!

请按照下列步骤,它可能会帮助您:(pseudocode)

Sender.java:-

集体寄件者{

  1. 静态最终字符串QUEUE_NAME =“ queue_name”;

void main(String [] argv){

  1. 建立连接。

  2. 声明队列。

    => channel.queueDeclare(QUEUE_NAME,true,false,false,null);

  3. 在同一队列中发布多个消息:

    =>整数计数; //用户输入的扫描仪无消息

    =>在while循环的channel.basicPublish()中使用i ++发布[“ message” + i]以获得计数时间

  4. 关闭通道连接。

}

}

MessageConsumer.java:-

MessageConsumer类{

  1. 静态最终字符串QUEUE_NAME =“ queue_name”;

void main(String [] argv){

  1. 建立连接。

  2. 声明队列。

    => channel.queueDeclare(QUEUE_NAME,true,false,false,null);

  3. 使用channel.basicQos(1); //消费者预取。

  4. 使用最终消费者消费者=新的Defaultconsumer()来消费消息
    {public void handleDelivery {...}};

  5. channel.basicConsume(QUEUE_NAME,真实,消费者);)

}

}

运行2个或更多MessagerConsumer.java实例以检查消息的串行使用

然后使用相应的用户输入运行Sender.java。

看看您是否以此得到了预期的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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