我正在使用Spring Boot + RabbitMQ服务器,对于我的一个队列,我希望我的多个消费者能够连续消费这些消息,即
Expexted Behaviour
consumer1: message1 xxxxxxxx message3 xxxxxxxx
consumer2: xxxxxxxx message2 xxxxxxxx message4
现在我正在使用以下内容来实现排他性:
@RabbitListener(queues = Constants.QUEUE_TOPIC, exclusive = true)
但是这一次只允许一个活跃的消费者,所以我的功能不会破坏,但可伸缩性是。
请建议正确的方法。谢谢!
答案 0 :(得分:0)
按照这些步骤,它可能会帮助你:(伪代码)
Sender.java: -
班级发件人{
void main(String [] argv){
建立联系。
声明队列。
=> channel.queueDeclare(QUEUE_NAME,true,false,false,null);
在同一个队列中发布多条消息:
=> int count; //扫描仪没有消息的用户输入
=>发布[“message”+ i] with i ++ in channel.basicPublish()in while循环计数次数
关闭频道连接。
}
}
<强> MessageConsumer.java: - 强>
class MessageConsumer {
void main(String [] argv){
建立联系。
声明队列。
=&gt; channel.queueDeclare(QUEUE_NAME,true,false,false,null);
使用channel.basicQos(1); //消费者预取。
使用最终消费者消费者消耗消息= new Defaultconsumer()
{public void handleDelivery {...}};
channel.basicConsume(QUEUE_NAME,true,consumer);)
}
}
运行MessagerConsumer.java的2个或更多实例以检查消息的串行消耗
然后根据用户输入运行Sender.java。
看看你是否得到了想要的结果。