美文网首页
SpringBoot整合RabbitMQ1(Direct Exc

SpringBoot整合RabbitMQ1(Direct Exc

作者: 我爱铲屎 | 来源:发表于2020-03-24 11:56 被阅读0次

    一. 一些基本概念

    消息队列

    面试官问你什么是消息队列?把这篇甩给他!

    RabbitMQ

    RabbitMQ-简书
    柯南君:看大数据时代下的IT架构(2)消息队列之RabbitMQ-基础概念详细介绍

    AMQP

    AMQP 协议详解-简书

    二.依赖和配置

    引入rabbitmq相关依赖

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    

    相关配置

    spring.rabbitmq.host=localhost
    spring.rabbitmq.port=5276
    spring.rabbitmq.username=guest
    speing.rabbitmq.password=guest
    

    三、使用样例1(Direct Exchange)

    配置Direct Exchange

    @Configuration
    public class RabbitDirectConfig {
         public static final String DIRECTNAME = "yzh-direct";
         @Bean
         Queue queue(){return new Queue("hello-queue");}
         @Bean
         DirectExchange directExchange(){
              return new DirectExchange(DIRECTNAME,true,false);
         }
         @Bean
         Binding binding(){
              return BindingBuilder.bind(queue()).to(directExchange()).with("direct");
         }
    }
    

    配置消费者

    @Component
    public class DirectReceiver {
          @RabbitListener(queues="hello-queue")
          public void handler1(String msg){
                System.out.println("DirectReceiver:handler1:" + msg);
          }
    }
    

    测试

    注入RabbitTemplate来发送消息

    @Autowired
    RabbitTemplate rabbitTemplate;
    
    @Test
    void contextLoads() {
        rabbitTemplate.convertAndSend("hello-queue","Hello yzh!");
    }
    

    启动项目,运行测试方法


    捕获.PNG

    四、使用样例2(Fanout Exchange)

    配置Fanout Exchange

    @Configuration
    public class RabbitFanoutConfig() {
          public static final String FanoutNAME = "yzh-fanout";
          @Bean
          FanoutExchange fanoutExchange(){
                return new FanoutExchange(FanoutNAME,true,false)
          }
    
          @Bean
          Queue queueOne(){return new Queue("queue-one");}
          @Bean
          Queue queueTwo(){return new Queue("queue-two");}
          
          @Bean
          Binding bindingOne(){
                return new BindingBuilder.bind(queueOne()).to(fanoutExchange());
          }
          @Bean
          Binding bindingTwo(){
                return new BindingBuilder.bind(queueTwo()).to(fanoutExchange());
          }
    }
    

    配置消费者

    @Component
    public class FanoutReceiver{
          @RabbitListener(queues = "queue-one")
          public void handler1(String msg){
                System.out.println("FanoutReceiver:handler1:" + msg);
          }
          @RabbitListener(queues = "queue-two")
          public void handler2(String msg){
            System.out.println("FanoutReceiver:handler2:" + msg);
          }
    }
    

    测试

    @Test
    void test1(){
        rabbitTemplate.convertAndSend(RabbitFanoutConfig.FANOUTNAME,null,"Hello yzh!哈哈哈");
    }
    
    
    捕获.PNG

    相关文章

      网友评论

          本文标题:SpringBoot整合RabbitMQ1(Direct Exc

          本文链接:https://www.haomeiwen.com/subject/ydtoyhtx.html