Azure服务总线-锁定持续时间和复制,它们是如何关联的?

Azure服务总线-锁定持续时间和复制,它们是如何关联的?,azure,azure-functions,azureservicebus,azure-servicebus-queues,azure-servicebus-topics,Azure,Azure Functions,Azureservicebus,Azure Servicebus Queues,Azure Servicebus Topics,我有一个azure函数监视azure服务总线队列,默认锁定持续时间为30秒。此azure函数根据来自队列的消息中的用户信息发送电子邮件通知 我注意到重复的电子邮件传出,因此检查了跟踪日志,发现azure函数已为同一用户调用了两次。日志条目如下: 2018-08-09T14:38:05.1249371Z-执行'AzureFunction'原因='在'servicebusqueue'上检测到新的ServiceBus消息',Id=4657012a-94ac-4b22-a628-2e94285aeeb7

我有一个azure函数监视azure服务总线队列,默认锁定持续时间为30秒。此azure函数根据来自队列的消息中的用户信息发送电子邮件通知

我注意到重复的电子邮件传出,因此检查了跟踪日志,发现azure函数已为同一用户调用了两次。日志条目如下:

2018-08-09T14:38:05.1249371Z-执行'AzureFunction'原因='在'servicebusqueue'上检测到新的ServiceBus消息',Id=4657012a-94ac-4b22-a628-2e94285aeeb7

2018-08-09T14:38:33.3335833Z-执行'AzureFunction'原因='在'servicebusqueue'上检测到新的ServiceBus消息',Id=3ff8eea3-9b9b-43ae-a797-5acf01c2ae6c


消息只添加了一次到队列中,我正在尝试了解是什么可以生成另一条消息。这可能是因为锁的持续时间吗?

消息只添加了一次,但它至少是PeekLock的一次交付保证。
如果您的邮件在收到后30秒内未成功完成,它将被解锁并再次接收。增加锁定持续时间或缩短处理时间应该可以解决这个问题。

消息只添加一次,但使用PeekLock至少可以保证一次交付。
如果您的邮件在收到后30秒内未成功完成,它将被解锁并再次接收。增加锁定持续时间或减少处理时间可以解决此问题。

是的,这可能是由于锁定持续时间造成的。只有在函数执行完成后,才会从队列中接收并删除消息。如果执行时间超过30秒,消息将被解锁,使其可供任何其他接收器使用

在您的情况下,接收者将是同一个Azure函数,它将在另一时间读取消息,这就是为什么您会看到消息的重复处理

锁定持续时间的最大值为5分钟。如果Azure功能仅在收到邮件时发送电子邮件通知,则可以将锁定持续时间增加到5分钟。电子邮件传输不应该花费那么长的时间,这样其他接收者就无法接收该消息


如果您计划在发送通知的同时向Azure功能添加一些内容,则可以为锁定Azure功能设置自动续订,请查看更多详细信息。这将使邮件保持锁定状态,不会留下复制选项。

是的,这可能是由于锁定持续时间造成的。只有在函数执行完成后,才会从队列中接收并删除消息。如果执行时间超过30秒,消息将被解锁,使其可供任何其他接收器使用

在您的情况下,接收者将是同一个Azure函数,它将在另一时间读取消息,这就是为什么您会看到消息的重复处理

锁定持续时间的最大值为5分钟。如果Azure功能仅在收到邮件时发送电子邮件通知,则可以将锁定持续时间增加到5分钟。电子邮件传输不应该花费那么长的时间,这样其他接收者就无法接收该消息


如果您计划在发送通知的同时向Azure功能添加一些内容,则可以为锁定Azure功能设置自动续订,请查看更多详细信息。这将保持邮件锁定,不允许复制。

Perfect。非常感谢。完美的非常感谢。