雷丰阳springboot之消息之rabbitmq简介
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了雷丰阳springboot之消息之rabbitmq简介,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3696字,纯文字阅读大概需要6分钟。
内容图文
![雷丰阳springboot之消息之rabbitmq简介](/upload/InfoBanner/zyjiaocheng/991/9790c25d7dcd4f7bb96c84089c4ff406.jpg)
消息服务的,两个常见的规范,一个是JMS,java 消息 服务。
还有一个就是AMQP,高级消息队列协议。
我们也会整合使用RabbitMQ来测试使用。
通过上面的场景,就是,解释了,我们为什么要使用,这些消息服务中间件。
消息服务有两个重要的概念,一个叫做消息代理,message broker,一个叫做目的地,就是destination。
消息代理,就是消息中间件的服务器。
消息发送者,是将消息发送到消息代理,消息代理,将消息发送到目的地。
目的地可以有两种形式,第一种是队列的形式,可以进行点对点通信。第二种形式是主题的形式,可以进行publish和subscribe,发布和订阅。
消息通信方式
这里面一定要注意,消息只有唯一的发送者和接受者,但是并不是说,只能够有一个接收者。
这句话,是要好好理解的。就是队列的形式的话,消息的接收者可以是B,C,D,但是消息一旦是被B拿走的话,其他人就只能够干瞪眼了。
两个常见的消息通信规范
在springboot当中对JMS和AMQP的支持
配置整合RabbitMQ
消息是由消息头和消息体组成的。
消息体是我们发出去的数据,它是不透明的。
消息头就是一堆属性组成的: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来决定发往哪个队列。
Queue是消息的容器。
队列里面的消息,一直等到有人连接队列,将消息取走,消息就不复存在了。
一个消息是如何抵达队列的呢?
- 首先是消息的生产者,Publisher,创建出来一个message。
- 这个message是发给了消息队列服务器的。首先抵达的是消息队列服务器的Exchange。这个叫做交换器。
- Exchange根据你发的消息message当中的routing-key路由键决定把消息派给某个队列Queue。
- 最终message是放在Queue中了。
- 这个Queue和Exchange之间的关联关系,就叫做绑定:Binding。交换器和消息队列之间的路由规则表。一个交换器,可以绑定多个队列,一个队列也可以绑定到多个交换器上。
- 如果我们每次去消息队列当中获取一个消息,我们都去建立一条TCP连接,那么这是非常耗费资源的。所以,我们和消息队列服务器一般是建立一条TCP链接,如果是想要获取数据,就开辟一个信道,这个信道就是Channel,就是我们真正用来发送数据、订阅队列、接收消息所使用的通道。这是一种为了节省资源的操作。
- Consumer:消费者
- Virtual Host:把我们整个的rabbitmq服务器,可以在内部划分出来很多的vhost,每一个vhost就是一个迷你版本的robbitmq的。它们都是可以独立运行的。vhost之间都是隔离的。每个vhost有自己的exchange、queue、路由规则、权限控制机制、身份认证、加密信息。所以,我们连接我们的rabbitmq的服务器的时候,必须指定我们的虚拟主机vhost是什么。vhost默认是
/
,是通过路径来进行划分的。 - Broker:我们也称之为message Broker,翻译过来就叫做消息代理,所谓的消息代理,指的就是我们的消息队列服务器实体。
RabbitMQ的运行机制
AMQP当中的消息路由机制和JMS当中,还是有一些差别的。
AMQP当中增加了Exchange和Binding等角色。
Exchange类型
Exchange类型一共是有四种:direct、fanout、topic、headers。
这个headers,我们就不说了,这个用得是非常少的。
这个不是用路由键来判断的,而是用AMQP协议的消息头。
第一种叫做direct exchange。
它的作用就是我们routing-key和binding-key一模一样的时候,我们就会发送给对应队列。
这个就是典型的点对点通信模型。
Fanout Exchange,这个就比较简单了。
这个交换器下面绑定了3-5个消息队列,比如说,是这个样子的。
不管你发过来的消息,绑定的路由键,是什么玩意。
Fanout Exchange就会把这个消息,给下面绑定的queue每个人,都发一份的。
就是这么霸气的哦。
这个就是,我们说的广播模式。
这个发送消息的速度是最快的。
这也是我们实现JMS当中发布/订阅模式的参考实现。
第三个就是topic exchange。
这个就比较复杂了。
这个允许我们的交换器对路由键,进行一些模糊匹配。
然后呢,有选择性地把消息挑选出来,发给某一个队列的哦。
内容总结
以上是互联网集市为您收集整理的雷丰阳springboot之消息之rabbitmq简介全部内容,希望文章能够帮你解决雷丰阳springboot之消息之rabbitmq简介所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。