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()方法
在這裏插入圖片描述
在隊列queue001中查看發送的消息
在這裏插入圖片描述
運行testSendMessage2()方法觀察發送的消息是否路由到對應的隊列中
在這裏插入圖片描述
消息已經發送對對應路由關係的隊列中去了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章