8

我想知道是否有任何优雅的方法来确保队列始终具有不同的消息(与重复检测窗口或任何时间段无关)?

我知道服务总线队列提供会话概念(正如我提到的服务总线队列的重复检测对我没有帮助,因为它取决于时间段),这可以达到我的目的,但我不希望我的组件依赖于另一个 Azure服务,就因为这个功能。

谢谢,

4

2 回答 2

15

这是不可能可靠地做到的。

只是没有机制可以查询存储队列并找出具有相同内容的消息是否已经存在或以前存在。您可以尝试使用一些存储表来实现自己的逻辑,但这并不可靠——因为进入表可能会成功,然后进入队列可能会失败——现在你可能会在表中有错误的数据。

您的代码应始终假定它可以检索包含已处理的相同数据的消息。这是因为当正在处理消息的工作人员崩溃或花费太长时间时,消息可能会返回队列。

于 2013-01-11T15:02:15.937 回答
1

您可以使用服务总线。类似于 Azure 存储队列,但它允许 256Kb-1MB 的消息并进行重复检测

于 2018-09-12T18:05:19.523 回答