RabbitTemplate是我們在與SpringAMQP整合的時候進行發送消息的關鍵類
該類提供了豐富的發送消息的方法,包括可靠性消息投遞、回調監聽消息接口ConfirmCallback、返回值確認接口
ReturnCallback等等同樣我們需要注入到Spring容器中,然后直接使用。
在與spring整合時需要實例化,但是在與Springboot整合時,只需要添加配置文件即可
首先將其注入到bean里面:
@Bean public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) { RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory); return rabbitTemplate; }
然后在其他類引用:
package com.dwz.spring; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.amqp.AmqpException; import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessagePostProcessor; import org.springframework.amqp.core.MessageProperties; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest public class TestDwz { @Autowired private RabbitTemplate rabbitTemplate; @Test public void testMessage01() { MessageProperties messageProperties = new MessageProperties(); messageProperties.getHeaders().put("desc", "信息描述。。。"); messageProperties.getHeaders().put("type", "自定義消息類型。。。"); Message message = new Message("Hello RabbitMQ!".getBytes(), messageProperties); rabbitTemplate.convertAndSend("topic001", "spring.amqp", message, new MessagePostProcessor() { @Override public Message postProcessMessage(Message message) throws AmqpException { System.out.println("----添加額外的設置----"); message.getMessageProperties().getHeaders().put("desc", "額外修改的信息描述"); message.getMessageProperties().getHeaders().put("attr", "額外新加的屬性"); return message; } }); } @Test public void testMessage02() { //創建消息 MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("text/plain"); Message message = new Message("spring 消息".getBytes(), messageProperties); rabbitTemplate.send("topic001", "spring.abc", message); rabbitTemplate.convertAndSend("topic001", "spring.amqp", "hello object message send!"); } }