【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、

原文地址:https://www.cnblogs.com/frankruby/p/15151841.html