接上文 RabbitMQ-死信队列
1 工作队列模式
@RabbitListener(queues = "yyds")
public void receiver(String data){ //这里直接接收String类型的数据
System.out.println("一号消息队列监听器 "+data);
}
@RabbitListener(queues = "yyds")
public void receiver2(String data){
System.out.println("二号消息队列监听器 "+data);
}
把配置类的JSON转换和死信队列定义删掉
在rabbitmq网页管理端把死信队列和yyds队列都删除,死信交换机也删除
启动服务
出现队列
然后在amq.direct交换机发送消息
可以发现默认是轮询方式发送的。
关闭服务
发送3条消息,
启动服务器
@Resource
private CachingConnectionFactory connectionFactory;
@Bean(name = "listenerContainer")
public SimpleRabbitListenerContainerFactory listenerContainer(){
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setPrefetchCount(1); //将PrefetchCount设定为1表示一次只能取一个
return factory;
}
除了定义连个相同的监听方法,还可以在注解中定义,比如定义10个同样的消费者:
@RabbitListener(queues = "yyds", containerFactory = "listenerContainer", concurrency = "10")
public void receiver(String data){
System.out.println("一号消息队列监听器 "+data);
}
重启服务,出现10个消费者