我有一个服务总线队列,其中设置了重复检测。
通过CosmosDb触发功能,然后需要在服务总线队列中创建消息;但是,每次尝试都会失败,并出现一条重复的消息错误,要求MessageId。
该功能是否可以使用Javascript SDK创建新的有效消息有效负载?
如果不是,那么消息负载应该是什么样的?
答案 0 :(得分:0)
当我们激活复制时,Windows Azure Service Bus将开始存储消息的历史记录。可以将这段时间配置为从几分钟到几天。如果有重复的消息发送到服务总线,则服务将自动忽略该消息。
在我们的情况下,在大多数情况下重复检测是可以的,但在某些情况下则很差(尤其是在10分钟范围内)。为了解决这个问题,我们引入了一个“断路器”: 在服务总线的messageId属性中输入一个值,如下所示:
msg.MessageId = messageId + "_" + DateTime.Now.ToString("u");
如果只想防止“垃圾邮件”,则可以考虑将重复检测窗口设置为最小(20秒)。 (个人而言,我希望看到一个低至5秒的阈值。)
当前允许的范围是20秒到7天。