• 消息模板-RabbitTemplate


    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!");
        }
    }
  • 相关阅读:
    windows服务创建与管理
    html前端技术:??
    C#整数三种强制类型转换int、Convert.ToInt32()、int.Parse()的区别
    convert转化成特定日期格式
    关于android性能,内存优化(转载)
    不错的Android博客
    十步优化SQL Server中的数据访问(转载)
    数据库SQL优化大总结之 百万级数据库优化方案(转载)
    SQL Server数据库性能优化之SQL语句篇(转载)
    50种方法优化SQL Server数据库查询(转载)
  • 原文地址:https://www.cnblogs.com/zheaven/p/11906416.html
Copyright © 2020-2023  润新知