IT评测·应用市场-qidao123.com

标题: RabbitMQ — 异步调用 [打印本页]

作者: 温锦文欧普厨电及净水器总代理    时间: 2024-11-9 09:23
标题: RabbitMQ — 异步调用
RabbitMQ 是一个开源的消息代理中心件,它利用高级消息队列协议(AMQP, Advanced Message Queuing Protocol)来实现不同系统之间的消息传递。它以 Erlang 语言编写,具有高可靠性、灵活性和易于扩展的特点,被广泛应用于异步通信、数据流处理等场景。
官网地址:https://www.rabbitmq.com/
1. RabbitMQ 的核心组件

在 RabbitMQ 中,主要有以下几个核心组件:

2. RabbitMQ 的工作流程

RabbitMQ 的消息流大致如下:
3. 服务部署

基于Docker来安装RabbitMQ,利用下面的命令即可:
  1. docker run \
  2. -e RABBITMQ_DEFAULT_USER=cyt\
  3. -e RABBITMQ_DEFAULT_PASS=123321 \
  4. -v mq-plugins:/plugins \
  5. --name mq \
  6. --hostname mq \
  7. -p 15672:15672 \
  8. -p 5672:5672 \
  9. --network cyt-net\
  10. -d \
  11. rabbitmq:3.8-management
复制代码
可以看到在安装命令中有两个映射的端口:

安装完成后,我们访问 http://ip:15672即可看到管理控制台。首次访问须要登录,默认的用户名和暗码在配置文件中已经指定了。
4. 收发消息

4.1 交换机

管理控制台主页,打开Exchanges选项卡,可以看到已经存在很多交换机
点击任意交换机,即可进入交换机详情页面。
利用控制台中的publish message 发送一条消息

这里是由控制台模拟了生产者发送的消息。由于没有消费者存在,最终消息丢失了,这样说明交换机没有存储消息的能力。
4.2 队列

打开Queues选项卡,新建一个队列
此时,我们再次向amq.fanout交换机发送一条消息。会发现消息依然没有到达队列!!
怎么回事呢?
发送到交换机的消息,只会路由到与其绑定的队列,因此仅仅创建队列是不够的,我们还须要将其与交换机绑定。
4.3 绑定关系

点击Exchanges选项卡,点击amq.fanout交换机,进入交换机详情页,然后点击Bindings菜单,在表单中填写要绑定的队列名称
4.4 发送消息

再次回到exchange页面,找到刚刚绑定的amq.fanout,点击进入详情页,再次发送一条消息。
回到Queues页面,可以发现被绑定的队列中已经有一条消息了。
这个时候如果有消费者监听了MQ的队列,自然就能吸收到消息了。
5. 数据隔离

5.1 用户管理

点击Admin选项卡,首先会看到RabbitMQ控制台的用户管理界面:
这里的用户都是RabbitMQ的管理或运维人员。现在只有安装RabbitMQ时添加的cyt这个用户。细致观察用户表格中的字段,如下:

对于小型企业而言,出于成本考虑,通常只会搭建一套MQ集群,公司内的多个不同项目同时利用。这个时候为了避免互干系扰, 我们会利用virtual host的隔离特性,将不同项目隔离。一般会做两件事情:

比如,我们创建一个新的用户,定名为cyt123,发现此时cyt123用户没有任何virtual host的访问权限,下来须要进行授权。
5.2 virtual host

切换到刚刚创建的cyt123用户登录,然后点击Virtual Hosts菜单,进入virtual host管理页
可以看到现在只有一个默认的virtual host,名字为 /。
可以在该用户下创建一个单独的virtual host,而不是利用默认的/。
由于我们是登录cyt123账户后创建的virtual host,因此回到admin菜单,你会发现当前用户已经具备了对新建的这个virtual host的访问权限了。
此时,点击页面右上角的virtual host下拉菜单,切换virtual host为 刚刚创建的,然后就可以对这个virtual host下的交换机和队列进行操作。
这就是基于virtual host 的隔离效果。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4