微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

相关ID和投放代码有什么区别

如何解决相关ID和投放代码有什么区别

我一直在寻找关于这两者之间区别的很好的解释, 但没有真正找到一个

到目前为止,我所知道的是: 相关性ID是一个字符串(已转换为字符串的Guid),而传递标签一个整数。 每个邮件的相关性ID都是唯一的,而传递标签仅在 通道(通道是作用域)。

很好。...但是目的有什么不同?为什么我们需要一条消息的两个标识符?

解决方法

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

投放代码

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

相关ID

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

Correlation ID通常在RabbitMQ的上下文中使用,当我想查看发送消息的同步行为时,响应该消息的另一个发送者将发送响应,但在Reply-to标记中将具有relatedID。在RabbitMQ中复制的常见模式是RPC调用,它更像是同步消息传递。

但是,传递标记是每个通道的消息传递的指示器,通常在遵循“确认传递”模型时会进入作用域。

两者的用途完全不同,因此不是消息标识符。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。