工作队列轮循分发

创建队列配置文件类
@Configuration
public class RabbitConfig {

//多个队列名称
private final static String QUEUE_NAME = "test_work_queue";
private final static String QUEUE_NAME1 = "test_work_queue1";

@Bean
public Queue queue() {
return new Queue(RabbitConfig.QUEUE_NAME);
}
@Bean
public Queue queue1() {
return new Queue(RabbitConfig.QUEUE_NAME1);
}
}

1.生产者和简单队列的一样

2.消费者1
@RabbitListener(queues = "test_work_queue")
public class Received1 {

@RabbitHandler
public void process(String hello) {
System.out.println("获取消息1:" + hello);
// 休眠
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
3.消费者2和消费者1一样
@RabbitListener(queues = "test_work_queue")
public class Received2 {

@RabbitHandler
public void process(String hello) {
System.out.println("获取消息2:" + hello);
// 休眠
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

工作队列公平分发


1.application.properties配置文件
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123
spring.rabbitmq.virtual-host=member
#公平分发:在发送确认消息之前,消费队列只会发一条消息给消费者
spring.rabbitmq.listener.simple.prefetch=1



生产者和消费者和轮循分发的代码一样