发送方停止时 Azure 服务总线队列 ScheduledEnqueueTimeUtc 的行为 运行

Behavior of Azure Service Bus Queue ScheduledEnqueueTimeUtc when sender stops running

我们有一个用例,我们需要安排作业,这些作业将作为消息从 Azure Web api 服务发送到 Azure 服务总线队列。因为我们需要在稍后的时间点安排它,所以一种解决方案是使用 Scheduled Delivery ScheduledEnqueueTimeUtc。 我的理解是,只有在指定的时间到期后,消息才会被排队。我担心的是如果 Web API 崩溃或同时进行升级会发生什么。

1.Will 消息因为尚未入队而丢失?

2.Where 这条消息是否存储在中间时间?

第二种解决方案是使用 visibilityTimeOut 的存储队列,其中消息入队并且不会受到 Web 的影响 API。

  1. 从稳定性和可扩展性的角度来看,哪个是更好的选择?

消息被发送到服务总线,服务总线根据计划排队(可接收)。所以,回答你的问题

  1. 没有
  2. 在队列中,只是无法接收
  3. visibilityTimeOut 用于存储队列。请参考 comparison doc 做出决定。

请注意,虽然您无法接收预定的消息,但您可以 peek 它们。