第四章 (6)消息模板-RabbitTemplate

1年前 ⋅ 1166 阅读

RabbitTemplate,即消息模板

  • 我们在与SpringAMQP整合的时候进行发送消息的关键类
  • 该类提供了丰富的发送消息的方法,包括可靠性投递消息方法、回调监听消息接口ConfirmCallback、返回值确认接口ReturnCallback等等。同样我们需要进行注入到Spring容器中,然后直接使用
  • 在与Spring整合时需要实例化,但是在与SpringBoot整合时,在配置文件中添加配置即可

代码实现

  • 声明RabbitTemplate
@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory){ 
    return new RabbitTemplate(connectionFactory);
}
  • 发送消息
@Autowired
private RabbitTemplate rabbitTemplate;

@Test
public void testSendMessage1(){
    // 创建消息
    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;
        }
    });
}

@Test
public void testSendMessage2(){
    // 创建消息
    MessageProperties messageProperties = new MessageProperties();
    messageProperties.setContentType("text/plain");
    Message message = new Message("Hello 消息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!");
}

全部评论: 0

    我有话说: