• 27、springboot整合RabbitMQ(1)


    RabbitMQ整合

    使用dockers下载带management的版本,该版本是带web界面的,可操作性比较强

    启动

     
    第二个-p是web界面的访问地址
     
    客户端进行访问:

     

    账号密码均是guest

     看图进行设置:

     

    1、添加exchange(交换器):

    全部添加之后

    2、添加队列

    3、绑定

    ........

    4、发送消息

    ........

     

    再队列中查看消息

    工程中进行整合

    新建工程:

    1、自动配置的类

     

    1.1、---有自动配置了连接工厂

     

    1.2、---基本的 配置类

     封装了RabbitMq的所有配置

    自动配置的配置类

    1.3、---RabbitTemplate 给RabbitMq发送和接受消息

    1.4---AmqpAdmin  系统管理功能组件

    1.5---消息

     

    需要将消息序列化成数组

    2、单波

    2.1、发送消息
    @Autowired
    RabbitTemplate rabbitTemplate;
    
    //单播(点对点)
    @Test
    public void contextLoads() {
        //message需要自己定义,定义消息体和消息头
        //rabbitTemplate.send(exchage,routKey,message);
    
        //默认当成消息体,只需要将传入要发送的对象,自动序列化发送给rabbitmq
        //rabbitTemplate.convertAndSend(xchage,routKey,message);
    
        Map<String,Object> map = new HashMap<>();
        map.put("msg","这是IDEA整合的测试");
    
        //对象默认序列化以后发送
        rabbitTemplate.convertAndSend("exchange.direct",
                "atguigu.news",map);
    }
    用于rabbitTemplate.send(exchage,routKey,message);
    运行在web界面进行查看结果!!!

    此时这个队列已经接收到消息

    2.2、接受消息

    接受之后消息信道的消息就会消失!!!

    2.3、如何以json的方式进行显示

    可以自己写一个自定义的

     

    新建一个配置类

    @Configuration
    public class MyAMQPConfig {
        @Bean
        public MessageConverter messageConverter(){
            return new Jackson2JsonMessageConverter();
        }
    }
    再次进行测试
    此时过去的就是json数据类型

    此时也可以进行消息的接受消息
    也可以进行反序列化

     

    测试对象:

    public class Book {
        private  String name;
        private int  price;
        public Book() {
        }
        public Book(String name, int price) {
            this.name = name;
            this.price = price;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getPrice() {
            return price;
        }
        public void setPrice(int price) {
            this.price = price;
        }
    }

    接收到信息

     

    此时是可以拿到数据以及类型,此时可以做强转!!!!

    3.广播
    //广播
    @Test
    public void sengMsg(){
        rabbitTemplate.convertAndSend("exchange.fanout","",new Book("三国",32));
    }
    此时的routKey可以不写,因为是广播
     
    此时查看队列

    所有的信道都会收到消息!!!

  • 相关阅读:
    matlab练习程序(连续系统辨识与响应)
    【转】灵敏度可以是负值吗_【技术指南】 精确度,准确度,分辨率和灵敏度
    XStream升级1.4.18问题 规格严格
    基于Flink的网络流量实时解析 规格严格
    Maven构建时报错,File encoding has not been set, using platform encoding GBK解决方法 规格严格
    Spring Boot动态修改日志级别 规格严格
    内存分析工具 规格严格
    ES5.6.12客户端连接报错Caused by: java.lang.ClassNotFoundException: org.elasticsearch.http.AbstractHttpServe 规格严格
    动态调整日志等级 规格严格
    时序数据库存储初识1 规格严格
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10442093.html
Copyright © 2020-2023  润新知