springboot整合RabbitMQ

1.Spring-AMQP概念

  • 什么是Spring-AMQP
    • Spring框架的AMQP消息解决方案,提供模板化的发送和接收消息的抽象层,提供基于消息驱动的POJO的消息监听等
    • 提供不依赖于任何特定的AMQP代理实现或客户端库通用的抽象,最终用户代码将很容易实现更易替换、添加和删除AMQP,因为它可以只针对抽象层来开发
    • 总之就是提高我们的框架整合消息队列的效率,springboot为更方便开发RabbitMQ推出了starter
    • 我们使用spring-boot-starter-amqp进行开发

2.springboot整合RabbitMQ实战

  • 创建web项目,引入依赖

    <!--RabbitMQ AMQP-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
  • yml配置文件

    spring:
      rabbitmq:
        host: 192.168.101.128
        port: 5672
        virtual-host: /dev
        password: Gen123
        username: admin
    
  • RabbitMQConfig文件

    package com.gen.config;
    
    import org.springframework.amqp.core.*;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class RabbitMQConfig {
         
    
        public static final String EXCHANGE_NAME = "order_exchange";
        public static final String QUEUE_NAME = "order_queue";
    
        /**
         * 交换机
         *
         * @return
         */
        @Bean
        public Exchange orderExchange() {
         
            return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();
        }
    
        /**
         * 队列
         *
         * @return
         */
        @Bean
        public Queue orderQueue() {
         
            return QueueBuilder.durable(QUEUE_NAME).build();
        }
    
        /**
         * 交换机与队列进行绑定
         *
         * @param orderQueue
         * @param orderExchange
         * @return
         */
        @Bean
        public Binding orderBinding(Queue orderQueue, Exchange orderExchange) {
         
            return BindingBuilder.bind(orderQueue).to(orderExchange).with("order.#").noargs();
        }
    }
    
  • 消息生产者-测试类

    package com.gen;
    
    import com.gen.config.RabbitMQConfig;
    import org.junit.jupiter.api.Test;
    import org.springframework.amqp.rabbit.core.RabbitTemplate;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    
    @SpringBootTest
    class GenRabbitmqApplicationTests {
         
    
        @Autowired
        private RabbitTemplate rabbitTemplate;
    
        @Test
        void send() {
         
            this.rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME, "order.new", "您有新订单");
        }
    }
    
  • 消息消费者

    package com.gen.listener;
    
    import com.gen.config.RabbitMQConfig;
    import org.springframework.amqp.core.Message;
    import org.springframework.amqp.rabbit.annotation.RabbitHandler;
    import org.springframework.amqp.rabbit.annotation.RabbitListener;
    import org.springframework.stereotype.Component;
    
    @Component
    @RabbitListener(queues = RabbitMQConfig.QUEUE_NAME)
    public class OrderMQListener {
         
    
        /**
         * RabbitHandler会自动匹配消息类型(消息自动确认)
         *
         * @param msg
         * @param message
         */
        @RabbitHandler
        public void orderConsumer(String msg, Message message) {
         
            System.out.println(msg);
            System.out.println(message);
        }
    }
    

相关推荐

  1. SpringBoot 整合 RabbitMQ

    2024-02-19 07:02:02       57 阅读
  2. springboot整合RabbitMQ

    2024-02-19 07:02:02       50 阅读
  3. SpringBoot整合RabbitMQ

    2024-02-19 07:02:02       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-19 07:02:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-19 07:02:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-19 07:02:02       82 阅读
  4. Python语言-面向对象

    2024-02-19 07:02:02       91 阅读

热门阅读

  1. 【笔记】Android MTU 知识及常见问题

    2024-02-19 07:02:02       59 阅读
  2. windows_tcp简单代码

    2024-02-19 07:02:02       48 阅读
  3. 小程序API能力汇总——基础容器API(三)

    2024-02-19 07:02:02       56 阅读
  4. 二、深入学习TensorRT,Developer Guide篇(一)

    2024-02-19 07:02:02       58 阅读
  5. 算法竞赛常用的库函数

    2024-02-19 07:02:02       42 阅读
  6. 机器学习算法的最新进展

    2024-02-19 07:02:02       48 阅读
  7. cookie+session和token

    2024-02-19 07:02:02       55 阅读
  8. 计算机网络——网络安全

    2024-02-19 07:02:02       39 阅读
  9. 计算机网络——16概述和传输层服务

    2024-02-19 07:02:02       41 阅读
  10. 【ArcGIS Pro二次开发】(81):文本符号_CIMTextSymbol

    2024-02-19 07:02:02       45 阅读
  11. Qt使用单例模式读取xml文件

    2024-02-19 07:02:02       46 阅读