简介
简单消息监听容器 == 装载消费者
作用
- 可以监听队列(多个队列)
- 设置事务特性、事务管理器、事务属性、事务容量、是否开启事务、回滚消息等。
- 设置消费者数量、最小最大数量、批量消费。
- 设置消费者标签生成策略、是否独占模式、消费者属性等。
- 设置消息确认和消息签收模式、是否重回队列、异常捕获Handler函数。
- 设置具体的监听器、消息转换器等等。
- 注意:SimpleMessageListenerContainer可以进行动态设置,比如在运行中的应用可以动态的修改其消费者数量的大小、接收消息的模式等。
很多基于RabbitMQ的自制定化后端管控台在进行动态设置的时候,也是根据这个动态设置特性去实现的。所以可以看出SpringAMQP非常的强大。
示例
//注意: 优先级比 Queue 的Receiver低
@Bean
public SimpleMessageListenerContainer simpleMessageListenerContainer(ConnectionFactory connectionFactory) {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory);
//1. 设置监听的队列
container.setQueueNames("topic.que", "fanout.que");
// 2. 设置消费者数量,默认就是1
container.setConcurrentConsumers(1);
container.setMaxConcurrentConsumers(5);
// 4. 设置消息是否重回队列
container.setDefaultRequeueRejected(false);
// 5. 设置消息的签收模式
container.setAcknowledgeMode(AcknowledgeMode.AUTO);
// 6. 消费消息
container.setMessageListener((ChannelAwareMessageListener) (message, channel) -> {
String msg = new String(message.getBody());
System.out.println("*******消费者*******:" + msg);
});
return container;
}
网友评论