• 【SpringBoot-消息 02】


    一、概念

    1、消息服务中间件主要是提升异步通信能力

    2、消息服务的两个重要概念:消息代理(message broker)和目的地(destination)

    消息发送后,消息代理进行管理然后在发送到目的地

    3、消息队列主要的两种目的地

      队列((queue)):点对点的通信(消息发到一个队列中,消息接收者从队列中获取消息,然后被移除此队列。只能有一个队列但不是只有一个消息接收者)

      主题(topic):发布(publish)/订阅(subscribe)的消息通信(消息发布到主题,多个接收者进行订阅接收)

    4、JMS(Java Message Service)JAVA消息服务:基于JVM消息代理的规范。ActiveMQ、HornetMQ是JMS实现

    5、AMQP:高级消息队列协议,也是一个消息代理的规范,兼容JMS,RabbitMQ是AMQP的实现

    6、Spring支持

    • spring-jms提供了对JMS的支持
    • spring-rabbit提供了对AMQP的支持
    • 需要ConnectionFactory的实现来连接消息代理
    • 提供JmsTemplate、RabbitTemplate来发送消息
    • @JmsListener(JMS)、@RabbitListener(AMQP)注解在方法上监听消息代理发布的消息
    • @EnableJms、@EnableRabbit开启支持

    7、Spring Boot自动配置

    • JmsAutoConfiguration
    • RabbitAutoConfiguration

    二、RabbitMQ

    1、从消息发送到接收的整个流程示意图

    Publisher:消息生产者

    Broker:表示消息队列服务器实体

    Virtual Host:虚拟主机,表示一批交换器、消息队列和相关对象

    Exchange:交换器,用来接收生产者发送的消息并将这些消息路由给服务器中的队列。Exchange有4种类型:direct(默认),fanout, topic, 和headers,不同类型的Exchange转发消息的策略有所区别
    Binding:绑定交换器和队列

    Queue:消息队列,用来保存消息直到被消费否则消息会一直待在队列里面。一个消息可投入一个或多个队列。

    Connection:网络连接,比如TCP网络连接

    Channel:信道,即消息通过信道发送给消费者

    Consumer:消费者

    三、docker安装RabbitMQ

    1、拉取镜像

    docker pull rabbitmq:3.9.3-management

    2、启动RabbitMQ

    docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq a0a2d74e6e6a
    
    -d 后台运行,-p指定映射端口
    
    5672客户端和docker容器的端口
    
    15672是浏览器访问管理界面的端口
    
    a0a2d74e6e6a 镜像ID

    3、浏览器访问mq的管理页面

    http://172.16.203.134:15672/
    
    初始密码:guest/guest

    4、测试消息发送的流程

     4.1、先创建三个交换器  --》分别对应不同的类型

    4.2、在创建四个消息队列

    4.3、绑定交换机和消息队列-->按照上图进行绑定

    4.4、

  • 相关阅读:
    Web大规模高并发请求和抢购的解决方案
    常用的排序算法
    Kafka中的消息是否会丢失和重复消费(转)
    excel操作之poi-ooxml
    spring-boot-configuration-processor 是干啥用的
    递归和尾递归的区别和原理(转)
    kafka接口文档和kafka教程
    quartz (从原理到应用)详解篇(转)
    Elastic-Job开发指南(转)
    SimpleDateFormat线程不安全及解决办法(转)
  • 原文地址:https://www.cnblogs.com/frankruby/p/15151841.html
Copyright © 2020-2023  润新知