架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1558|回复: 0

RabbitMQ AMQP 消息架构详解

[复制链接]
发表于 2022-8-14 23:32:43 | 显示全部楼层 |阅读模式
AMQP协议介绍

AMQP(Advanced Message Queuing Protocol)高级消息队列协议,一个提供统一消息服务的应用层标准协议,是应用层协议的一个开放标准,为面向消息的中间件设计。AMQP是一个进程间传递异步消息的网络协议。

基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。

AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP在消息提供者和客户端的行为进行了强制规定,使得不同卖商之间真正实现了互操作能力。


路由消息

在 AMQP 架构中任何成功的消息路由都包含三个部分:

  • Exchange:生产者发布消息的地方
  • Queues:消费者接收消息的地方
  • Bindings:消息如何从交换机路由到特定队列


Exchanges and Bindings(交换机和绑定)

那么消息是如何到达队列的呢?每当您想将消息传递给消费者时,您必须首先将其发送到交换器。然后,基于某些规则或路由键,RabbitMQ 将决定它应该将消息传递到哪个队列。

规则 - 或路由键 - 使您能够将队列绑定到交换。RabbitMQ 将尝试将消息中的路由键与绑定中使用的键匹配。然后,消息将根据以下四种交换类型之一传递到队列: fanout、topic、direct、header

QQ截图20220814233221.jpg

Fanout Exchange

这种类型的交换会将它接收到的所有消息广播到绑定到它的所有队列。与发布的消息一起提供的任何路由键都将被忽略。

Topic Exchange

在这种类型的交换中,消息根据路由键发送到队列。这意味着发送到主题交换的消息必须具有特定的路由键,该键必须是单词列表,由点分隔(例如,'acs.deviceoperations.')。措辞限制为 255 个字节。

绑定键必须与路由键的格式相同。因此,使用特定路由键发送的消息将被传递到使用匹配绑定键绑定的每个队列。

绑定键允许以下表达式规则:

*(星号)可以只替换一个词
# (hash) 可以代替零个或多个单词
当队列使用“#”(哈希)绑定键绑定时,它将接收所有消息,而不管路由键如何,就像在 Fanout  扇出交换中一样。

Direct Exchange

声明队列时,它会自动绑定到使用队列名称作为路由键的交换器。如果路由键匹配,则将消息传递到相应的队列。

Header Exchange

头交换机和主题交换机有点相似,但是不同于主题交换机的路由是基于路由键,头交换机的路由值基于消息的header数据。
主题交换机路由键只有是字符串,而头交换机可以是整型和哈希值。

(完)





上一篇:【转】AMQP 协议详解
下一篇:【转】.NET 性能优化-快速遍历 List 集合
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-19 20:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表