Azure JavaScript功能退出服务总线队列

时间:2019-03-05 21:56:51

标签: javascript azure-functions azureservicebus azure-servicebus-queues

我有一个服务总线队列,其中设置了重复检测。

通过CosmosDb触发功能,然后需要在服务总线队列中创建消息;但是,每次尝试都会失败,并出现一条重复的消息错误,要求MessageId。

该功能是否可以使用Javascript SDK创建新的有效消息有效负载?

如果不是,那么消息负载应该是什么样的?

1 个答案:

答案 0 :(得分:0)

当我们激活复制时,Windows Azure Service Bus将开始存储消息的历史记录。可以将这段时间配置为从几分钟到几天。如果有重复的消息发送到服务总线,则服务将自动忽略该消息。

在我们的情况下,在大多数情况下重复检测是可以的,但在某些情况下则很差(尤其是在10分钟范围内)。为了解决这个问题,我们引入了一个“断路器”: 在服务总线的messageId属性中输入一个值,如下所示:

msg.MessageId = messageId + "_" + DateTime.Now.ToString("u");

如果只想防止“垃圾邮件”,则可以考虑将重复检测窗口设置为最小(20秒)。 (个人而言,我希望看到一个低至5秒的阈值。)

当前允许的范围是20秒到7天。