Azure Service Bus主题上的唯一消息

时间:2019-05-24 17:06:12

标签: azureservicebus azure-servicebus-topics

是否可以确保Azure Service Bus主题上的唯一消息?

我知道ASB具有重复检测功能。但这不是我真正追求的。

比方说,主题包含一条消息,其消息ID为123。在消费者处理完此消息之前,我要丢弃主题上具有相同ID的其他消息。处理完此消息后,将再次允许ID为123的新消息。

服务总线可以帮助您解决此问题,还是我们需要在应用程序层中进行处理?

1 个答案:

答案 0 :(得分:0)

好吧,我想知道为什么您的代码会想两次发送任何具有相同ID的消息?队列/主题ID应该是唯一的,就像数据库表行中的ID应该始终具有唯一的ID。

我认为服务总线不应该对消息有效负载进行任何验证,这不是他们的工作。确保您不发送两个具有相同ID的消息是避免发生更多复杂情况的更好方法。与以后管理冲突相比,最好确保不要发送具有相同ID的两条消息……例如,如果其中一条消息在数据库中插入数据并且两个条目具有相同的ID,则它将引发异常。

此外,删除具有相同ID的“其他消息”将导致无法解释的行为/问题/错误,其作用远远超过防止ID冲突的原因。如果您的用户做了某件事,发送了ID为123的消息,希望看到结果,但是由于其他人发送了具有相同ID的消息,该消息被您的系统删除了,该怎么办?您只是为该用户破坏了系统,不是吗?