第 4 章 AMQP


AMQP 是一个开放的互联网协议,用于可靠地发送和接收消息。它受到多个软件供应商和主要机构的支持。AMQP 1.0 成为 2012 年的 OASIS 标准,而在 2014 年成为 ISO 标准。

  • 带有会话多路的帧协议
  • 支持 peer-to-peer 和 client-server 连接
  • 为无损失数据交换提供标准类型系统
  • 提供流控制、心跳和资源限制以提高分布式系统中的可靠性
  • 使用空间效率的二进制编码和管道来缩短延迟

4.1. AMQP 交付保证

组合的 AMQP 模型基于消息交付的生命周期。在链接的结尾处,会创建一个代表消息传输的实体,在一定时间段内存在,最后是"settled",表示它可以忘记。在交付的组合生命周期中,有四种感兴趣的事件。

  • 交付在发送发送时创建。
  • 交付在接收器创建。
  • 交付在发送者上被忽略。
  • 交付在接收方上被忽略。

由于发送方和接收器是并发运行,因此这些事件可能会按各种顺序发生,并且这些事件的顺序会导致消息交付保证不同。

最一次交付

最大规模的交付也称为"presettled"或"fire and forget"交付。

  1. 交付在发送发送时创建。
  2. 交付在发送者上被忽略。
  3. 交付在接收器创建。
  4. 交付在接收方上被忽略。

在这种配置中,发送者在到达接收器之前(即忘记)发送,如果任何发生在 flight 中发送,则发送者没有用于重新发送的基础。

此模式适用于接受临时消息丢失的应用程序,如用于定期传感器数据,或者应用程序本身可以检测到故障并重新发送的应用程序。

at-least-once delivery

  1. 交付在发送发送时创建。
  2. 交付在接收器创建。
  3. 交付在接收方上被忽略。
  4. 交付在发送者上被忽略。

在这个配置中,接收器会在收到它时计算发送,当接收接收方后,发送者会发现接收方。如果传输中的任何内容都发生,发送者可以重新发送。但是,接收器已经忘记了发送,因此重新发送将导致重复的消息发送。应用程序可以使用唯一消息 ID 来过滤重复项。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.