一.RabbitTemplate介绍
RabbitTemplate:消息模板,在与Spring AMQP整合时,进行发送消息的关键类。
包括了可靠性投递消息方法、回调监听消息接口ConfirmCallBack、返回值确认接口ReturnCallBack等,同样需要进行注入到ioc容器中。
与spring整合需要实例化,与spring boot整合只需要在配置文件中配置就好了
相关配置
@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory){
return new RabbitTemplate(connectionFactory);
}
测试
发送消息
@Test
public void testSend1(){
rabbitTemplate.convertAndSend("amqp.bean.topic", "amqp.send","hello spring");
}
结果:

测试2:
@Test
public void testSend(){
//创建消息
MessageProperties properties = new MessageProperties();
properties.getHeaders().put("send.amqp","测试发送信息");
Message message = new Message("hello spring amqp".getBytes(), properties);
//发送
rabbitTemplate.convertAndSend("amqp.bean.topic", "amqp.send", message, message1 -> {
System.out.println("添加额外的设置");
message1.getMessageProperties().getHeaders().put("extra","额外信息");
return message1;
});
}
测试结果:

二.SimpleMessageListenerContainer介绍
简单消息容器,对于消费者的配置项,这个类可以满足
监听多个队列、自动启动、自动声明,事务设置,设置消费者属性,批量消费、设置消息确认和自动确认模式、重回队列,异常捕获handler函数,消费者标签生成测虐,多占模式,设置监听器、转换器。
SimpleMessageListenerContainer可以进行动态设置,在运行的应用中动态修改其消费者数量的大小、接收消息模式等
配置:
@Bean
public SimpleMessageListenerContainer simpleMessageListenerContainer(ConnectionFactory connectionFactory){
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory);
//设置监听的队列
container.setQueues(queue());
//设置当前消费者数量
container.setConcurrentConsumers(1);
container.setMaxConcurrentConsumers(5);
//重回队列
container.setDefaultRequeueRejected(false);
//签收机制
container.setAcknowledgeMode(AcknowledgeMode.AUTO);
//消费端标签策略
container.setConsumerTagStrategy(queue-> queue+"_"+ UUID.randomUUID().toString());
//消息监听
container.setMessageListener((ChannelAwareMessageListener) (message, channel) -> System.out.println(new String(message.getBody())));
return container;
}
运行springboot主应用,
可以看到在rabbitmq的控制台中,有Container监听的队列。
