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 中的通道和链接有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

JSch中的'shell'通道和'exec'通道有啥区别

范围和链接有啥区别?

编译器和链接器有啥区别?

符号链接和硬链接有啥区别?

Linux中硬链接文件和软链接文件有啥区别?

NTFS 连接点和符号链接有啥区别?