我已经为这两者之间的区别寻找了一个很好的解释,但并没有真正找到一个。
到目前为止我所知道的是:相关 id 是一个字符串(转换为字符串的 Guid),交付标签是一个 int。每条消息的correlation id都是唯一的,而delivery tag只在channel中是唯一的(channel就是scope)。
没关系....但是目的有什么区别?为什么我们需要一个消息的两个标识符?
我已经为这两者之间的区别寻找了一个很好的解释,但并没有真正找到一个。
到目前为止我所知道的是:相关 id 是一个字符串(转换为字符串的 Guid),交付标签是一个 int。每条消息的correlation id都是唯一的,而delivery tag只在channel中是唯一的(channel就是scope)。
没关系....但是目的有什么区别?为什么我们需要一个消息的两个标识符?
这两个标识符存在于两个不同的通信概念层中,并且具有在每种情况下有用的不同属性。虽然可以设计一个协议,让一个标识符同时服务于两个目的,但将它们分开可以使两种实现更简单。
Correlation ID 通常在 RabbitMQ 的上下文中使用,当我想查看发送消息的同步行为时,另一个发送者将发送响应,但将在回复标签中具有相关 ID。在 RabbitMQ 中复制的常见模式是 RPC 调用,它更像是同步消息传递。
但是,交付标签是每个通道的消息交付的指标,并且通常在遵循确认交付模型时出现。
两者都有完全不同的目的,并且不是消息标识符。