Java教程

雷丰阳springboot之消息之rabbitmq简介

本文主要是介绍雷丰阳springboot之消息之rabbitmq简介,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录
  • 消息通信方式
  • 两个常见的消息通信规范
  • 配置整合RabbitMQ
  • RabbitMQ的运行机制
  • Exchange类型

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是消息的容器。

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

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

  • 首先是消息的生产者,Publisher,创建出来一个message。
  • 这个message是发给了消息队列服务器的。首先抵达的是消息队列服务器的Exchange。这个叫做交换器。
  • Exchange根据你发的消息message当中的routing-key路由键决定把消息派给某个队列Queue。
  • 最终message是放在Queue中了。
  • 这个Queue和Exchange之间的关联关系,就叫做绑定:Binding。交换器和消息队列之间的路由规则表。一个交换器,可以绑定多个队列,一个队列也可以绑定到多个交换器上。
  • 如果我们每次去消息队列当中获取一个消息,我们都去建立一条TCP连接,那么这是非常耗费资源的。所以,我们和消息队列服务器一般是建立一条TCP链接,如果是想要获取数据,就开辟一个信道,这个信道就是Channel,就是我们真正用来发送数据、订阅队列、接收消息所使用的通道。这是一种为了节省资源的操作。

image-20210503213959244

  • Consumer:消费者
  • Virtual Host:把我们整个的rabbitmq服务器,可以在内部划分出来很多的vhost,每一个vhost就是一个迷你版本的robbitmq的。它们都是可以独立运行的。vhost之间都是隔离的。每个vhost有自己的exchange、queue、路由规则、权限控制机制、身份认证、加密信息。所以,我们连接我们的rabbitmq的服务器的时候,必须指定我们的虚拟主机vhost是什么。vhost默认是/,是通过路径来进行划分的。
  • Broker:我们也称之为message Broker,翻译过来就叫做消息代理,所谓的消息代理,指的就是我们的消息队列服务器实体。

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之消息之rabbitmq简介的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!