• springboot~rabbitmq的队列初始化和绑定


    配置文件,在rabbit中自动建立exchange,queue和绑定它们的关系

    1. 代码里初始化exchange
    2. 代码里初始化queue
    3. 代码里绑定exchange,queue和routekey
    4. 配置文件,直接声明vhost

    代码里初始化exchange

       /**
       * rabbitMq里初始化exchange.
       *
       * @return
       */
      @Bean
      public TopicExchange crmExchange() {
        return new TopicExchange(EXCHANGE);
      }
    

    代码里初始化queue

      /**
       * rabbitMq里初始化队列crm.hello.
       *
       * @return
       */
      @Bean
      public Queue helloQueue() {
        return new Queue(HELLO);
      }
    

    代码里绑定exchange,queue和routekey

      /**
       * 绑定exchange & queue & routekey.
       *
       * @param queueMessage 队列
       * @param exchange     交换机
       * @param routekey     路由
       * @return
       */
      public Binding bindingExchange(Queue queueMessage, TopicExchange exchange, String routekey) {
        return BindingBuilder.bind(queueMessage).to(exchange).with(routekey);
      }
    

    配置文件

    spring:
        rabbitmq:
        host: localhost
        port: 5672
        username: guest
        password: guest
        virtual-host: lind
    

    完整代码

    package com.lind.microservice.productCenter.mq;
    
    import org.springframework.amqp.core.Binding;
    import org.springframework.amqp.core.BindingBuilder;
    import org.springframework.amqp.core.Queue;
    import org.springframework.amqp.core.TopicExchange;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * amqp配置.
     */
    @Configuration
    public class AmqpConfig {
    
      /**
       * 交换机.
       */
      public final static String EXCHANGE = "crm";
      /**
       * hello队列.
       */
      public final static String HELLO = "crm.hello";
      /**
       * 建立订单队列.
       */
      public final static String LIND_GENERATE_ORDER = "crm.generate.order";
    
    
      /**
       * 绑定exchange & queue & routekey.
       *
       * @param queueMessage 队列
       * @param exchange     交换机
       * @param routekey     路由
       * @return
       */
      public Binding bindingExchange(Queue queueMessage, TopicExchange exchange, String routekey) {
        return BindingBuilder.bind(queueMessage).to(exchange).with(routekey);
      }
    
    
      /**
       * rabbitMq里初始化exchange.
       *
       * @return
       */
      @Bean
      public TopicExchange crmExchange() {
        return new TopicExchange(EXCHANGE);
      }
    
      /**
       * rabbitMq里初始化队列crm.hello.
       *
       * @return
       */
      @Bean
      public Queue helloQueue() {
        return new Queue(HELLO);
      }
    
      /**
       * rabbitMq里初始化队列crm.generate.order.
       *
       * @return
       */
      @Bean
      public Queue orderQueue() {
        return new Queue(LIND_GENERATE_ORDER);
      }
    
    }
    
    

    队列发布者

    package com.lind.microservice.productCenter.mq;
    
    import java.util.Date;
    import org.springframework.amqp.core.AmqpTemplate;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class HelloPublisher {
      @Autowired
      AmqpTemplate rabbitTemplate;
      @Autowired
      AmqpConfig amqpConfig;
    
      public void hello() {
        String context = "hello " + new Date();
        System.out.println("HelloPublisher : " + context);
        amqpConfig.bindingExchange(
            amqpConfig.helloQueue(),
            amqpConfig.crmExchange(),
            "crm.hello.#"
        );
        this.rabbitTemplate.convertAndSend(AmqpConfig.EXCHANGE, AmqpConfig.HELLO, context);
      }
    
    
    }
    
    

    队列订阅者

    package com.lind.microservice.productCenter.mq;
    
    import org.springframework.amqp.rabbit.annotation.RabbitHandler;
    import org.springframework.amqp.rabbit.annotation.RabbitListener;
    import org.springframework.stereotype.Component;
    
    @Component
    @RabbitListener(queues = AmqpConfig.HELLO)
    public class HelloSubscriber {
      @RabbitHandler
      public void process(String hello) {
        System.out.println("HelloSubscriber  : " + hello);
      }
    
    }
    
    
  • 相关阅读:
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    redis被攻击,怎么预防
    Redis3.2.12单节点安装
    Linux安装Redis、后台运行、系统自启动
    Redis 密码设置和查看密码
    Redis protected-mode属性解读
    SpringCloud(9)----mysql实现配置中心
    SpringCloud(8)----zuul权限校验、接口限流
  • 原文地址:https://www.cnblogs.com/lori/p/9739130.html
Copyright © 2020-2023  润新知