消息模板-RabbitTemplate
我们在与SpringAMQP整合的时候进行发送消息的关键类。
该类提供了丰富的发送方法,包括可靠性投递消息方法、回调监听消息接口ConfirmCallback、返回值确认接口ReturnCallback等等。同样我们需要注入到Spring容器中,然后直接使用。
使用
1.在RabbitMQConfig中注入RabbitTemplate
@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
return rabbitTemplate;
}
2.在测试类中
@Autowired
private RabbitTemplate rabbitTemplate;
/**
* @Description: 测试rabbitTemplate发送消息
* @author kaili
* @date 2019/4/22 22:40
*/
@Test
public void testSendMessage() throws Exception {
//1 创建消息
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.err.println("------添加额外的设置---------");
message.getMessageProperties().getHeaders().put("desc", "额外修改的信息描述");
message.getMessageProperties().getHeaders().put("attr", "额外新加的属性");
return message;
}
});
}
/**
* @Description: 测试rabbitTemplate发送消息
* @author kaili
* @date 2019/4/22 22:40
*/
@Test
public void testSendMessage2() throws Exception {
//1 创建消息
MessageProperties messageProperties = new MessageProperties();
messageProperties.setContentType("text/plain");
Message message = new Message("mq 消息1234".getBytes(), messageProperties);
rabbitTemplate.send("topic001", "spring.abc", message);
rabbitTemplate.convertAndSend("topic001", "spring.amqp", "hello object message send!");
rabbitTemplate.convertAndSend("topic002", "rabbit.abc", "hello object message send!");
}
testSendMessage测试方法中通过不同的方式发送消息,convertAndSend方法发送消息可以通过定义MessagePostProcessor类来对发送的消息进行一些设置,运行testSendMessage()方法
在队列queue001中查看发送的消息
运行testSendMessage2()方法观察发送的消息是否路由到对应的队列中
消息已经发送对对应路由关系的队列中去了