zoukankan      html  css  js  c++  java
  • 28、springboot整合RabbitMQ(2)

    1、监听

    1.1、监听队列
    如订单系统和库存系统
    订单系统下订单之后将消息存放在消息队列中
    库存系统需要时刻进行监听消息队列的内容,有新的订单就需要进行库存相关的操作
     
    此时模拟监听消息队列中的Book信息
     
    监听类:
    @RabbitListener监听相关的消息队列
    @Service
    public class BookService {
        @RabbitListener(queues = "atguigu.news")
        public void receive(Book book){
            System.out.println("收到消息:" + book);
        }
    }

    开启关于RabbitMq注解

    //开启基于注解RabbitMq模式
    @EnableRabbit
    @SpringBootApplication
    public class AmqpApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(AmqpApplication.class, args);
        }
    }

    后台的监听结果

    1.2、获取消息头、消息体相关的参数

    import org.springframework.stereotype.Service;
    
    @Service
    public class BookService {
        @RabbitListener(queues = "atguigu.news")
        public void receive(Book book){
            System.out.println("收到消息:" + book);
        }
    
        //import org.springframework.amqp.core.Message;
        @RabbitListener(queues = "atguigu")
        public void receive02(Message message){
            System.out.println(message.getBody());
            System.out.println(message.getMessageProperties());
        }
    
    
    }

    打印的数据

    [B@2d4a67c8
    MessageProperties [headers={__TypeId__=com.cr.amqp.pojo.Book}, contentType=application/json, contentEncoding=UTF-8, contentLength=0, receivedDeliveryMode=PERSISTENT, priority=0, redelivered=true, receivedExchange=exchange.fanout, receivedRoutingKey=, deliveryTag=1, consumerTag=amq.ctag-193ojwCpIAgVmLfB52Prkg, consumerQueue=atguigu]
    收到消息:com.cr.amqp.pojo.Book@74095f6e

     

    2、创建

    假设有些信道活着队列不存在的情况
    可以使用AmqpAdmin进行创建交换器,转换规则、队列(Queue、Exchange、Binding)

    @Autowired
    AmqpAdmin amqpAdmin;
    //创建交换器
    @Autowired AmqpAdmin amqpAdmin;
    public void createExchange(){ //package org.springframework.amqp.core; //public interface Exchange extends Declarable amqpAdmin.declareExchange(new DirectExchange("amqp.exchange")); }

    结果:

    交换器的类:

    创建队列:

    amqpAdmin.declareQueue(new Queue("amqpadmin.queue"));

    绑定规则:

    //绑定规则
    amqpAdmin.declareBinding(new Binding("amqpadmin.queue",Binding.DestinationType.QUEUE,"amqp.exchange","amqp.aa",null));

  • 相关阅读:
    VirtualBox Network设置的NAT和Bridged Adapter模式区别
    Kubernetes里的ConfigMap的用途
    使用Kubernetes里的job计算圆周率后2000位
    给谷歌输入法增添自定义词组,提高输入效率
    推荐一个yaml文件转json文件的在线工具
    GCC同时使用静态库和动态库链接
    Linux后台开发常用工具
    gcc链接参数--whole-archive的作用
    rdynamic和-whole-archive
    gcc和ld 中的参数 --whole-archive 和 --no-whole-archive
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10442326.html
Copyright © 2011-2022 走看看