gpt4 book ai didi

rabbitmq - correlation id 和 delivery tag 有什么区别

转载 作者:行者123 更新时间:2023-12-04 17:24:18 24 4
gpt4 key购买 nike

我已经搜索了关于这两者之间区别的一个很好的解释,但并没有真正找到一个。

目前我知道的是:correlation id 是字符串(Guid 转换成字符串),delivery tag 是int。correlation id 对于每条消息都是唯一的,delivery tag 只有在 channel ( channel 就是范围)。

没关系....但目的有何不同?为什么一条消息需要两个标识符?

最佳答案

这两个标识符存在于两个不同的通信概念层,并且具有在每种情况下都有用的不同属性。虽然可以设计一种协议(protocol),使其具有一个标识符来满足两种目的,但将它们分开会使两种实现更简单。

送货标签

  • AMQP 通信层的一部分,内置于 RabbitMQ 本身。
  • 使用示例:a consumer process can acknowledge that a message has been processed并且可以在代理(RabbitMQ 服务器)上永久丢弃。
  • 在开放 channel 内自动分配每条已发送的消息
  • 必须在该 channel 内是唯一的,以便协议(protocol)正常运行。 不需要在不同的 channel 中是唯一的,所以一个简单的递增整数很容易实现。
  • 同一条消息可能会在不同的时间以不同的传递标签传递,甚至可能存在于多个队列中并同时传递给不同的消费者。

关联 ID

  • 使用 RabbitMQ 的应用程序的部分逻辑,而不是代理本身。
  • 使用示例:在两个单独的消息上使用匹配的相关 ID 和“回复”,应用程序希望将其视为 RPC 模式中的请求和响应。
  • 需要在首次创建消息时手动添加,并且是可选的。
  • 协议(protocol)不保证唯一性,只是将其视为任意字符串。应用程序以一种不太可能与其用例发生冲突的方式生成,例如适当形式的 UUID。
  • 无论消息被转发多少次或复制到多个队列中,每次传递消息时都将保持不变。

关于rabbitmq - correlation id 和 delivery tag 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64415091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com