AMQP 中的通道和链接有啥区别?
Posted
技术标签:
【中文标题】AMQP 中的通道和链接有啥区别?【英文标题】:What is the difference between channels and links in AMQP?AMQP 中的通道和链接有什么区别? 【发布时间】:2020-06-09 06:06:49 【问题描述】:我正在尝试了解 AMQP 协议的框架部分。我知道 AMQP 首先打开一个 TCP 连接,然后在这个连接中使用多个通道来防止设置多个 TCP 连接的开销(这很好解释 here)。 现在我正在努力理解链接是如何发挥作用的。所以据我了解,它的工作原理如下:
-
在两个容器(基本上是两个程序)之间建立了一个连接(大部分时间是 TCP)
创建了多个频道。它们不绑定到任何节点
一个会话结合了每个方向的两个通道,仍然没有绑定到任何节点
“链接”将会话从两端绑定到两个节点
我的理解正确吗?当我们已经有渠道时,为什么还需要“链接”的概念?为什么不让通道成为两个节点之间的连接呢?简单来说,频道和链接的区别是什么?
Microsoft 状态:
通道是连接顶部的单向、出站、虚拟传输路径。
和
链接是通过会话创建的通信路径,可实现单向传输消息
这对我来说听起来基本相同。 如果有人能用简单的术语解释通道、会话和链接之间的关系,我会非常高兴。
【问题讨论】:
【参考方案1】:长话短说
连接由连接两个节点的单向通道组成。
通道因此是可以构成连接的节点之间的单向通信
会话由两个通道(传入和传出)组成
Link协议是AMQP的核心。链路提供两个节点之间的单向传输。链接附加到 终点 处的节点。有两种终点:源和目标。终端负责跟踪特定传入或传出消息流的状态。源跟踪传出消息,目标跟踪传入消息。
注意:您可以将终端视为客户端中的一个套接字,您可以将其关联到一个精确的函数,例如源/目标。
完整解释
以下所有信息和图片均来自协议 OASIS 高级消息队列协议 (AMQP) 版本 1.0 的规范。更多信息请阅读this。
AMQP 网络由通过链路连接的节点组成。节点是负责安全存储和/或传递消息的命名实体。消息可以来自节点、终止于节点或由节点中继。
为了在不同容器中的节点之间进行通信,需要建立连接。 AMQP 连接由全双工、可靠排序的帧序列组成。框架是电线上承载的工作单元。
一个 AMQP 连接被分成协商数量的独立单向通道。一个 AMQP 会话将两个单向通道关联起来,形成一个双向的、顺序的对话。 两个容器。
单个连接可能同时有多个独立会话处于活动状态,最高可达协商的通道限制。连接和会话都由每个对等方建模为端点,存储有关连接或会话的本地和最后已知的远程状态。
为了在节点之间传输消息,需要在节点之间建立链接。链路是两个节点之间的单向路由。链接连接到终点处的节点。有两种终点:源和目标。终端负责跟踪特定传入或传出消息流的状态。
链接根据传输的消息数量提供基于信用的流量控制方案,允许应用程序控制在给定点从哪些节点接收消息
【讨论】:
很好的答案,谢谢。因此,虽然通道是连接的逻辑细分,但链接是两个“套接字”(源和目标)的组合,它们使用通道进行通信,对吧? 正是我认为你明白了:) 不错。你可能会喜欢这个介绍。 youtube.com/watch?v=ODpeIdUdClc以上是关于AMQP 中的通道和链接有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章