SpringBoot(八) Spring和消息队列RabbitMQ

 

概述

1.大多数应用中,可以通过消息服务中间件来提升系统异步能力和拓展解耦能力。

2.消息服务中的两个重要概念:消息代理(Message broker)目的地(destination)

当消息发送者发送消息后,将由消息代理接管,消息代理保证消息传递到指定目的地。

3.消息队列主要有两种形式的目的地: 

    1. 队列:点对点方式通信(point-to-point)
    2. 主题:发布/订阅消息服务

点对点式:消息发送者发送消息后,消息代理将其放入一个队列中,消息接受者从队列中读取数据,接受者接收数据后,将消息移除队列。

发布订阅:消息发布者将消息发布到主题中,多个接受者可以订阅主题,当消息到达时,所有的订阅者都会接收到消息。

4.JMS(Java Message Service) Java消息服务:基于JVM消息代理的规范。

5.AMQP(Advanced Message Queuing Protocol):它是一个面向消息中间件的开放式标准应用层协议。兼容JMS,RabbitMQ是AMQP的一个实现。

 

 
JMS
AMQP
定义 Java API 网络线级协议
跨平台
跨语言
Model (1)、Peer-2-Peer
(2)、Pub/Sub
(1)、direct exchange
(2)、fanout exchange
(3)、topic change
(4)、headers exchange
(5)、system exchange
后四种都是pub/sub ,差别路由机制做了更详细的划分
支持消息类型 TextMessage
MapMessage
ByteMessage
StreamMessage
ObjectMessage
Message
byte[]通常需要序列化

RabbitMQ

Message:消息头和消息体组成,消息体是不透明的,而消息头上则是由一系列的可选属性组成,属性:路由键【routing-key】,优先级【priority】,指出消息可能需要持久性存储【delivery-mode】

Publisher:消息的生产者,也是一个向交换器发布消息的客户端应用程序

Exchange:交换器,用来接收生产者发送的消息并将这些消息路由给服务器中的队列

Exchange的4中类型:direct【默认】点对点,fanout,topic和headers, 发布订阅,不同类型的Exchange转发消息的策略有所区别

Queue:消息队列,用来保存消息直到发送给消费者,它是消息的容器,也是消息的终点,一个消息可投入一个或多个队列,消息一直在队列里面,等待消费者连接到这个队列将数据取走。

Binding:绑定,队列和交换机之间的关联,多对多关系

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

Channel:信道,多路复用连接中的一条独立的双向数据流通道,信道是建立在真是的TCP链接之内的虚拟连接AMQP命令都是通过信道发送出去的。不管是发布消息,订阅队列还是接受消息,都是信道,减少TCP的开销,复用一条TCP连接。

Consumer:消息的消费者,表示一个从消息队列中取得消息的客户端的 应用程序

VirtualHost:小型的rabbitMQ,相互隔离

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

Exchange的三种方式

direct:根据路由键直接匹配,一对一

fanout:不经过路由键,直接发送到每一个队列

topic:类似模糊匹配的根据路由键,来分配绑定的队列。#匹配一个或者多个单词,*匹配一个单词

RabbitMQ安装与使用

在RabbitMQ官网的下载页面upload/201811271641126478.gif" alt="复制代码" style="margin: 0px; padding: 0px; max-width: 800px; height: auto; border: none !important;" />

#1.安装rabbitmq,使用镜像加速 docker pull registry.docker-cn.com/library/rabbitmq:3-management [root@node1 ~]# docker images REPOSITORY                                     TAG                 IMAGE ID            CREATED             SIZE registry.docker-cn.com/library/rabbitmq        3-management        c51d1c73d028        11 days ago         149 MB #2.运行rabbitmq ##### 端口:5672 客户端和rabbitmq通信 15672:管理界面的web页面  docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq c51d1c73d028  #3.查看运行 docker ps
复制代码
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信