• RabbitMQ基本使用


    一、RabbitMQ基本使用

    1、在order中server模块的pom.xml增加

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

      

     

    2、增加接收Mq消息

    package com.example.message;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.amqp.rabbit.annotation.RabbitListener;
    import org.springframework.stereotype.Component;
    
    /**
     * 接收Mq消息
     * Created by Think on 2019/2/14.
     */
    @Slf4j
    @Component
    public class MqReceiver {
    
        @RabbitListener(queues = "myQueue")
        public void process(String message){
            log.info("MqReceiver:{}",message);
        }
    }
    

      

    3、增加发送Mq消息

    /**
     * Mq消息发送方
     * Created by Think on 2019/2/14.
     */
    @Component
    public class MqSenderTest extends OrderApplicationTests {
    
        @Autowired
        private AmqpTemplate amqpTemplate;
    
        @Test
        public void send(){
            //myQueue 队列的名称
            amqpTemplate.convertAndSend("myQueue", "Hello,now " + new Date());
        }
    
    }
    

      

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class OrderApplicationTests {
    
    	@Test
    	public void contextLoads() {
    	}
    
    }
    

      

    4、在MQ管理页面增加myQueue的消息队列

    5、测试结果

    可以看到消息接收到的图

    二、自动创建队列名称

    @Slf4j
    @Component
    public class MqReceiver {
    
        //1. @RabbitListener(queues = "myQueue")
        //2. 自动创建队列
        @RabbitListener(queuesToDeclare = @Queue("myQueue"))
        public void process(String message){
            log.info("MqReceiver:{}",message);
        }
    }
    

      

    三、Exchange和Queue绑定

    public class MqReceiver {
    
        //1. @RabbitListener(queues = "myQueue")
        //2. 自动创建队列   @RabbitListener(queuesToDeclare = @Queue("myQueue"))
        //3. 自动创建,Exchange和Queue绑定
        @RabbitListener(bindings = @QueueBinding(
            value = @Queue("myQueue"),
            exchange = @Exchange("myExchange")
        ))
        public void process(String message){
            log.info("MqReceiver:{}",message);
        }
    }
    

      

    如下图

    四、消息分组发送

    public class MqReceiver {
    
    
        /**
         * 模拟服务1, 接收消息
         * @param message
         */
        @RabbitListener(bindings = @QueueBinding(
                exchange = @Exchange("myOrder"),
                key = "computer",
                value = @Queue("computerOrder")
    
        ))
        public void processComputer(String message){
            log.info("computer MqReceiver:{}",message);
        }
    
        /**
         * 模拟服务2, 接收消息
         * @param message
         */
        @RabbitListener(bindings = @QueueBinding(
                exchange = @Exchange("myOrder"),
                key = "fruit",
                value = @Queue("fruitOrder")
    
        ))
        public void processFruit(String message){
            log.info("Fruit MqReceiver:{}",message);
        }
    }
    

      定义两个消息接收,一个key为computer,一个为fruit

    消息发送方

     @Test
        public void sendOrder(){
            //myQueue 队列的名称
            amqpTemplate.convertAndSend("myOrder","computer", "Hello Computer,now " + new Date());
        }
    
        @Test
        public void sendOrder2(){
            //myQueue 队列的名称
            amqpTemplate.convertAndSend("myOrder","fruit", "Hello Fruit,now " + new Date());
        }
    

      

  • 相关阅读:
    谈mvc开发中gzip压缩的应用
    MIME 类型(HttpContext.Response.ContentType)列表
    Asp.net使用HttpModule压缩并删除空白Html请求
    ASP.NET MVC 网站优化之压缩技术
    从零开始编写自己的C#框架(25)——网站部署 【转】
    ReSharper的功能真的很强大主要是针对代码规范和优化,园子里介绍的也不少,如果你没有安装,那我只能表示你们会相见恨晚
    多用户角色权限访问模块问题”的解决思路( 位运算 + ActionFilterAttribute )
    Asp.Net Web Api 图片上传
    sqlserver并发用户数
    在线图片服务设计小计
  • 原文地址:https://www.cnblogs.com/linlf03/p/10374428.html
Copyright © 2020-2023  润新知