【问题标题】:What is the difference between channels and links in AMQP?AMQP 中的通道和链接有什么区别?
【发布时间】:2020-06-09 06:06:49
【问题描述】:

我正在尝试了解 AMQP 协议的框架部分。我知道 AMQP 首先打开一个 TCP 连接,然后在这个连接中使用多个通道来防止设置多个 TCP 连接的开销(这很好解释 here)。 现在我正在努力理解链接是如何发挥作用的。所以据我了解,它的工作原理如下:

  1. 在两个容器(基本上是两个程序)之间建立了一个连接(大部分时间是 TCP)
  2. 创建了多个频道。它们不绑定到任何节点
  3. 一个会话结合了每个方向的两个通道,仍然没有绑定到任何节点
  4. “链接”将会话从两端绑定到两个节点

我的理解正确吗?当我们已经有渠道时,为什么还需要“链接”的概念?为什么不让通道成为两个节点之间的连接呢?简单来说,频道和链接的区别是什么?

Microsoft 状态:

通道是连接顶部的单向、出站、虚拟传输路径。

链接是通过会话创建的通信路径,可实现单向传输消息

这对我来说听起来基本相同。 如果有人能用简单的术语解释通道、会话和链接之间的关系,我会非常高兴。

【问题讨论】:

    标签: java c# rabbitmq network-programming amqp


    【解决方案1】:

    长话短说

    连接由连接两个节点的单向通道组成。

    通道因此是可以构成连接的节点之间的单向通信

    会话由两个通道(传入和传出)组成

    Link协议是AMQP的核心。链路提供两个节点之间的单向传输。链接附加到 终点 处的节点。有两种终点:源和目标。终端负责跟踪特定传入或传出消息流的状态。源跟踪传出消息,目标跟踪传入消息。

    注意:您可以将终端视为客户端中的一个套接字,您可以将其关联到一个精确的函数,例如源/目标。

    完整解释

    以下所有信息和图片均来自协议 OASIS 高级消息队列协议 (AMQP) 版本 1.0 的规范。更多信息请阅读this

    AMQP 网络由通过链路连接的节点组成。节点是负责安全存储和/或传递消息的命名实体。消息可以来自节点、终止于节点或由节点中继。

    为了在不同容器中的节点之间进行通信,需要建立连接。 AMQP 连接由全双工、可靠排序的帧序列组成。框架是电线上承载的工作单元。

    一个 AMQP 连接被分成协商数量的独立单向通道。一个 AMQP 会话将两个单向通道关联起来,形成一个双向的、顺序的对话。 两个容器。

    单个连接可能同时有多个独立会话处于活动状态,最高可达协商的通道限制。连接和会话都由每个对等方建模为端点,存储有关连接或会话的本地和最后已知的远程状态。

    为了在节点之间传输消息,需要在节点之间建立链接。链路是两个节点之间的单向路由。链接连接到终点处的节点。有两种终点:源和目标。终端负责跟踪特定传入或传出消息流的状态。

    链接根据传输的消息数量提供基于信用的流量控制方案,允许应用程序控制在给定点从哪些节点接收消息

    【讨论】:

    • 很好的答案,谢谢。因此,虽然通道是连接的逻辑细分,但链接是两个“套接字”(源和目标)的组合,它们使用通道进行通信,对吧?
    • 正是我认为你明白了:)
    • 不错。你可能会喜欢这个介绍。 youtube.com/watch?v=ODpeIdUdClc
    猜你喜欢
    • 2019-10-19
    • 2011-10-09
    • 2014-11-26
    • 2017-06-14
    • 2010-09-16
    • 2014-12-22
    • 1970-01-01
    • 2013-09-05
    相关资源
    最近更新 更多