• SpringBoot集成RabbitMQ(生产者)


    默认读者已经对SpringBoot和RabbitMQ比较熟悉

    SpringBoot集成RabbitMQ(生产者)的步骤如下:

    1. 创建SpringBoot工程
    2. Maven添加 spring-boot-starter-amqp
    3. 编写application.properties配置RabbitMQ的信息
    4. 编写交换机、队列、绑定配置类
    5. 在业务逻辑代码中注入RabbitTemplate
    6. 调用RabbitTemplate的方法,完成消息推送

    1. 添加依赖


    在pom.xml添加依赖:

    <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-amqpartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4

    2. 编写application.properties

    spring.rabbitmq.host=localhost
    spring.rabbitmq.port=5276
    spring.rabbitmq.username=guest
    spring.rabbitmq.password=guest
    spring.rabbitmq.virtual-host=/
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3. 编写交换机、队列、绑定配置类

    2.1 方法一:直接new

    Bean配置:

    package com.lqk.producer;
    
    import org.springframework.amqp.core.*;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * @author lqk
     * @Date 2021/6/14
     * @Description
     */
    @Configuration
    public class ProducerConfig {
    
        public static final String EXCHANGE_NAME = "exchange_name";
        public static final String QUEUE_NAME = "topic_queue_name";
    
        @Bean
        public Queue myQueue(){
            Queue queue = new Queue(QUEUE_NAME, true, false, false);
            return queue;
        }
    
        @Bean
        public Exchange myExchange(){
            FanoutExchange fanoutExchange = new FanoutExchange(EXCHANGE_NAME, true, false);
            return fanoutExchange;
        }
        
        @Bean
        public Binding myBinding(@Qualifier("myQueue") Queue queue, @Qualifier("myExchange") Exchange exchange){
            Binding binding = BindingBuilder.bind(queue).to(exchange).with("test.*").noargs();
            return binding;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    2.2 方法二:建造者模式

    package com.lqk.producer;
    
    import org.springframework.amqp.core.*;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * @author 刘乾坤
     * @Date 2021/6/14
     * @Description
     */
    @Configuration
    public class ProducerConfig {
    
        public static final String EXCHANGE_NAME = "exchange_name";
        public static final String QUEUE_NAME = "topic_queue_name";
    
        @Bean
        public Queue myQueue(){
            // 持久化构造。  非持久化的构造使用nonDurable,想要定义其它的属性,在build之前继续调用对应的方法设置
            Queue queue = QueueBuilder.durable(QUEUE_NAME).build();
            return queue;
        }
    
        @Bean
        public Exchange myExchange(){
            // 想要定义其它的属性,在build之前继续调用对应的方法设置
            Exchange build = ExchangeBuilder.fanoutExchange(EXCHANGE_NAME).build();
            return build;
        }
    
        @Bean
        public Binding myBinding(@Qualifier("myQueue") Queue queue, @Qualifier("myExchange") Exchange exchange){
            Binding binding = BindingBuilder.bind(queue).to(exchange).with("test.*").noargs();
            return binding;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    4. 注入RabbitTemplate,发送消息

    @SpringBootTest
    @RunWith(SpringRunner.class)
    class SpringBootRabbitMqProducerApplicationTests {
    
    
        @Autowired
        private RabbitTemplate rabbitTemplate;
    
        @Test
        void contextLoads() {
            rabbitTemplate.convertAndSend(ProducerConfig.EXCHANGE_NAME, "test.hello", "hi~ha");
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    5. 结果


    成功创建交换机
    image.png

    成功创建队列
    image.png

    成功发送消息

    image.png

  • 相关阅读:
    7.MMD 法线贴图的设置与调教
    安装配置ingress-nginx支持https访问
    先进制造aps专题十 aps项目成功指南
    与君共勉:致毕业生
    CDR2020 不能移动群组里面的POWERCLIP图片解决办法
    Linux中的shell编程
    Java之~批量压缩文件为InputStream方式上传到云服务
    JVM性能优化案例:优化垃圾回收器的年轻代和老年代占比
    HTML5期末考核大作业网站——卫生与健康HTML+CSS+JavaScript
    安装Homebrew安装Git(Mac)
  • 原文地址:https://blog.csdn.net/weixin_42606421/article/details/131143359