其他分享
首页 > 其他分享> > 雷丰阳springboot之消息之rabbitmq简介

雷丰阳springboot之消息之rabbitmq简介

作者:互联网

目录

image-20210503195004840

消息服务的,两个常见的规范,一个是JMS,java 消息 服务。
还有一个就是AMQP,高级消息队列协议。
我们也会整合使用RabbitMQ来测试使用。

image-20210503195136230

image-20210503195247101

image-20210503195425877

通过上面的场景,就是,解释了,我们为什么要使用,这些消息服务中间件。

消息服务有两个重要的概念,一个叫做消息代理,message broker,一个叫做目的地,就是destination。

消息代理,就是消息中间件的服务器。

消息发送者,是将消息发送到消息代理,消息代理,将消息发送到目的地。

目的地可以有两种形式,第一种是队列的形式,可以进行点对点通信。第二种形式是主题的形式,可以进行publish和subscribe,发布和订阅。

消息通信方式

image-20210503204330429

这里面一定要注意,消息只有唯一的发送者和接受者,但是并不是说,只能够有一个接收者。

这句话,是要好好理解的。就是队列的形式的话,消息的接收者可以是B,C,D,但是消息一旦是被B拿走的话,其他人就只能够干瞪眼了。

image-20210503204935998

两个常见的消息通信规范

image-20210503205018409

image-20210503205103573

image-20210503205258901

在springboot当中对JMS和AMQP的支持

image-20210503205447929

配置整合RabbitMQ

image-20210503212424707

消息是由消息头和消息体组成的。

消息体是我们发出去的数据,它是不透明的。

消息头就是一堆属性组成的:routing-key、priority、delivery-mode。

Publisher是将message发给服务器的,也就是message broker的。

message发给message broker当中的Exchange的。

Exchange就好像现实生活当中的路由器,Exchange上面绑定了很多的队列,就好像路由器上面插了很多的网线一样的。

Exchange是通过routing-key来觉得消息到什么地方去的。

在RabbitMQ当中,Exchange是有四种类型:direct、fanout、topic和headers。

direct就是能够实现JMS当中的点对点消息模型的。

fanout,topic,headds可以实现JMS当中的发布订阅模型。

消息是通过交换器Exchange来决定发往哪个队列。

image-20210503213247789

Queue是消息的容器。

队列里面的消息,一直等到有人连接队列,将消息取走,消息就不复存在了。

一个消息是如何抵达队列的呢?

image-20210503213959244

image-20210503214417526

RabbitMQ的运行机制

image-20210503215306124

AMQP当中的消息路由机制和JMS当中,还是有一些差别的。

AMQP当中增加了Exchange和Binding等角色。

Exchange类型

image-20210503215613964

Exchange类型一共是有四种:direct、fanout、topic、headers。

这个headers,我们就不说了,这个用得是非常少的。

这个不是用路由键来判断的,而是用AMQP协议的消息头。

第一种叫做direct exchange。

它的作用就是我们routing-key和binding-key一模一样的时候,我们就会发送给对应队列。

这个就是典型的点对点通信模型。

image-20210503222426769

Fanout Exchange,这个就比较简单了。

这个交换器下面绑定了3-5个消息队列,比如说,是这个样子的。

不管你发过来的消息,绑定的路由键,是什么玩意。

Fanout Exchange就会把这个消息,给下面绑定的queue每个人,都发一份的。

就是这么霸气的哦。

这个就是,我们说的广播模式。

这个发送消息的速度是最快的。

这也是我们实现JMS当中发布/订阅模式的参考实现。

第三个就是topic exchange。

这个就比较复杂了。

这个允许我们的交换器对路由键,进行一些模糊匹配。

然后呢,有选择性地把消息挑选出来,发给某一个队列的哦。

image-20210503222846738

标签:交换器,springboot,Exchange,队列,rabbitmq,雷丰阳,消息,当中,message
来源: https://www.cnblogs.com/gnuzsx/p/14731115.html