公平分发也就是能者多劳模式,当有消费者处理完成后,MQ就会继续给它分发消息,直到MQ中所有消息都被消费。
公平分发需要注意的是,关闭自动应答模式,将每次分发的消息数进行限定,同时在消息消费完成后手动向MQ发送确认,之后MQ将该条消息移除,继续分发新的消息。
具体的介绍会在消费者1的代码中详细注释。
定义生产者
和简单队列一样,声明生产者(具体可查看之前的博客——简单队列)。本次循环发送50条消息到队列。
package com.mmr.rabbitmq.work;
import com.mmr.rabbitmq.util.ConnectionUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
public class Send {
private final static String QUEUE_NAME = "test_queue_work";
public static void main(String[] args) throws Exception {
Connection connection = ConnectionUtils.getConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
for (int i = 0; i < 50; i++) {
String msg="Hello work QUEUE " + i;
channel.basicPublish