一.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監聽的隊列。

