转载

spring Boot 2.x | 集成 rabbitmq

springboot 项目中增加入 rabbitmqmq 是系统架构设计中的重要一环, mq 具有系统间解耦,异步通信,流量削峰等优点,但是引入 mq 也意味着要增加系统架构的复杂度,需要考虑到 mq 服务的高可用等问题

rabbitmq

介绍: rabbitMQ 是实现 AMQP (高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗

AMQP ,即 Advanced Message Queuing Protocol ,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP 的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全

集成 rabbitmq

  1. pom文件引入 rabbitmq 依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
  2. application.yml 配置文件中增加 rabbitmq 的相关配置

    spring:
      rabbitmq:
        host: 127.0.0.1
        port: 5672
        username: guest
        password: guest
  3. 创建队列

    /**
     * @author: chenmingyu
     * @date: 2019/5/23 17:29
     * @description: 队列配置类
     */
    @Configuration
    public class RabbitQueueConfig {
    
        /**
         * 测试队列名称
         */
        public static final String TEST_QUEUE = "test";
    
        @Bean
        public Queue Queue() {
            return new Queue(TEST_QUEUE);
        }
    }
  4. 生产者实现

    /**
     * @author: chenmingyu
     * @date: 2019/5/23 17:32
     * @description: 生产者
     */
    @Component
    public class TestProduce {
    
        @Autowired
        private RabbitTemplate rabbitTemplate;
    
        /**
         * 发送消息
         */
        public void send(){
            System.out.println("发送消息");
            rabbitTemplate.convertAndSend(RabbitQueueConfig.TEST_QUEUE,"this is test");
        }
    }
  5. 消费者实现

    /**
     * @author: chenmingyu
     * @date: 2019/5/23 17:31
     * @description: 消费者
     */
    @Component
    @RabbitListener(queues = RabbitQueueConfig.TEST_QUEUE)
    public class TestConsumer {
    
        @RabbitHandler
        public void process(String msg) {
            System.out.println("消费消息  : " + msg);
        }
    }
  6. 测试

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class SpringbootRabbitmqApplicationTests {
    
        @Autowired
        private TestProduce testProduce;
    
        @Test
        public void contextLoads() {
            testProduce.send();
        }
    
    }

    输出

    spring Boot 2.x | 集成 rabbitmq

原文  https://chenmingyu.top/springboot-rabbitmq/
正文到此结束
Loading...