zoukankan      html  css  js  c++  java
  • 33、springboot——springboot整合RabbitMQ(1)②

    RabbitMQ整合

    使用dockers下载带management的版本,该版本是带web界面的,可操作性比较强
    第二个-p是web界面的访问端口

    启动rabbitmq

     
    客户端进行访问rabbirmq管理界面:

     

    账号密码均是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);
    }
    在web界面查看结果!!!

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

     

     2.2、接受消息

        /**
         * 测试获取消息
         */
        @Test
        public void getMsg(){
            Object o = rabbitTemplate.receiveAndConvert("atguigu.news");
            System.out.println(o.getClass());
            System.out.println(o);
        }

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

    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;
        }
    }

    测试

        @Test
        public void testObject(){
            //测试配置以json格式序列化后发送对象
            Book book = new Book("西游记",100);
            rabbitTemplate.convertAndSend("exchange.direct","atguigu.news",book);
        }

    接受消息

     3.测试广播

        /**
         * 测试广播
         */
        @Test
        public void testFanout(){
            rabbitTemplate.convertAndSend("exchange.fanout","",new Book("三国",32));
        }

    此时的routKey可以不写,因为是广播

    此时查看队列

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

  • 相关阅读:
    ServletConfig对象
    Servlet生命周期
    BeanListHandler
    表单校验
    SQL30081N 检测到通信错误。正在使用的通信协议:"TCP/IP"
    交货单寄售发货接口
    PI 7.4/7.5 Alert 配置
    SAP PI soap 方式 头部 传输 wsse:Security wsse:UsernameToken
    smartforms 打印参数 ( 预览 和 不预览直接打印 )设置
    migo增强中获取屏幕值的方法
  • 原文地址:https://www.cnblogs.com/lyh233/p/12670708.html
Copyright © 2011-2022 走看看