3.0 RabbitMQ整合Spring AMQP实战(三)- rabbitTemplate

消息模板-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()方法
3.0 RabbitMQ整合Spring AMQP实战(三)- rabbitTemplate_第1张图片
在队列queue001中查看发送的消息
3.0 RabbitMQ整合Spring AMQP实战(三)- rabbitTemplate_第2张图片
运行testSendMessage2()方法观察发送的消息是否路由到对应的队列中
3.0 RabbitMQ整合Spring AMQP实战(三)- rabbitTemplate_第3张图片
消息已经发送对对应路由关系的队列中去了

你可能感兴趣的:(RabbitMQ学习)