RabbitMQ 之 使用Web管理界面认识RabbitMQ

一、RabbitMQ简介:

RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue Protocol)的开源实现

核心概念:

Message
消息 消息是不具名的,它由消息头和消息体组成,消息体式不透明的,而消息头则由一系列的可选属性组成,这些属性包括routing-key(路由键)、priority(相对于其他消息的优先权)、delivery-mode(指该消息可能需要持久性存储)等。

Publisher

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

Exchange

交换器,用来接收生产者发送的消息并将这些消息路由给服务器中的队列。Exchange有4种类型:direct(默认)、fanout,topic,和headers,不同类型的Exchange转发消息的策略有所区别

Queue

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

Binding

绑定,用于消息队列和交换器之间的关联。一个绑定就是基于路由键将交换器和消息队列连接起来的路由规则,所以可以交换器理解成一个由绑定构成的路由表。Exchange和Queue的绑定可以是多对多的关系。

Connection

网络连接,比如一个TCP连接。

Channel

信道,多路复用连接中的一条独立的双向数据流通道,信道是建立在真实的TCP连接内的虚拟连接,AMQP命令都是通过信道发出去的,不管是发布消息、订阅队列还是接收消息,这些动作都是通过信道完成。因为对于操作系统来说建立和销毁TCP都是比较昂贵的开销,所以引入了信道的概念,以复用一条TCP连接

Consumer

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

Virtual Host

虚拟主机,表示一批交换器、消息队列和相关对象。虚拟主机是共享相同的身份认证和加密环境的独立服务器域。每个vhost本质上就是一个mini版的RabbitMQ服务器,拥有自己的队列、消息交换器、绑定和权限机制。vhost是AMQP概念的基础,必须再连接时指定,RabbitMQ默认的vhost是/。

Broker

表示消息队列服务器实体

AMQP中的消息路由

AMQP中消息的路由过程是Java开发者熟悉的JMS存在一些差别,AMQP中增加了ExchangeBinding的角色。生产者把消息发布到Exchange上,消息最终到达队列并被消费者接收,而Binding决定交换器的消息应该发送到那个队列。

 

Exchange类型

Exchange分发消息时根据类型的不同分发策略有区别,目前共四种类型:

directfanouttopicheaders。headers匹配AMQP消息的header而不是路由键,headers交换器和direct交换器完全一致,但性能差很多,目前几乎用不到了,所以直接看另外三种类型;


二、安装RabbitMQ

安装RabbitMQ使用的是Docker,没有安装Docker的同学可以参考下面这篇博客:

https://blog.csdn.net/qq_41097820/article/details/88795336

首先在docker hub中搜索RabbitMQ镜像:

这里安装带有management标签的版本,这种会带有Web的管理界面

1、查看是否以及安装了RabbitMQ镜像

docker images

2.拉取前面选择好的rabbitmq

docker pull rabbitmq:3-management

 下载完成后,再使用docker images查看,rabbitmq以及有了

 

3.运行rabbitmq

docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq 4d6576293cb8

-p表示端口映射,5672端口是客户端和RabbitMQ及通信的接口,15672端口为管理界面访问web界面的端口。

 三、使用Web管理界面操作RabbitMQ

查看虚拟机ip地址

ip addr

下面是进去以后的效果,默认的用户名及密码都为 guest ,登录进去以后就是RabbitMQ的管理界面。

RabbitMQ的管理界面。

 1、首先先添加几个交换器:

2、将三种类型的交换器都添加一个:

3、切换到消息队列栏同上:

4、将Exchange与Queue绑定

点击Exchange的Name可进入到Exchange的详情页面,在里面将Exchange与Queue进行Binding

zs.direct与各Queue绑定后的结果

zs.fanout与各Queue绑定后的结果

zs.topic与各Queue绑定后的结果

 

5、开始测试

1)测试zs.direct(点对点)

点进交换器之后有一栏是Publish message,我们发送消息就是在这里进行发送的:

填写好之后,点击Publish message发送。

发送成功后切换到Queues查看是否收到消息,很显然 ls 收到了一条消息,点击 ls 进去查看

 进来之后,展开Get message选项,点击GetMessage(s)就能得到消息了

下面是得到的之前发送过来的消息

2)测试zs.fanout(广播)

同上面测试一样,发送一条消息给 ls :

但是查看消息队列时会发现,zs.fanout下的所有消息队列都接收到了:

但是,在查看ls所收到的消息时,始终都是之前那一条:

由于消息获取来之后并没有给消息队列进行应答,将接收的消息删除。解决办法就是把Ack Mode改成第二个选项就可以了。

3)测试zs.topic(发布订阅)

 消息队列中与test.news匹配上的有:ls.news、ww.news,所以它们是会多收到一条消息的。

下面是收到的ls.news中收到的来自zs.topic的消息:

猜你喜欢

转载自blog.csdn.net/qq_41097820/article/details/88793329