发件人停止运行时 Azure 服务总线队列 ScheduledEnqueueTimeUtc 的行为
Posted
技术标签:
【中文标题】发件人停止运行时 Azure 服务总线队列 ScheduledEnqueueTimeUtc 的行为【英文标题】:Behavior of Azure Service Bus Queue ScheduledEnqueueTimeUtc when sender stops running 【发布时间】:2021-02-24 07:55:33 【问题描述】:我们有一个用例,我们需要安排将作为消息从 Azure Web api 服务发送到 Azure 服务总线队列的作业。由于我们需要在以后安排它,一种解决方案是使用预定交付ScheduledEnqueueTimeUtc
。
我的理解是消息只有在指定的时间到期后才会排队。我担心的是如果 Web API 同时崩溃或升级会发生什么。
1.消息未入队会丢失吗?
2.这个消息在中间时间存放在哪里?
第二种解决方案是使用visibilityTimeOut
的存储队列,其中消息已入队且不受Web API 影响。
-
从稳定性和可扩展性的角度来看,哪个是更好的选择?
【问题讨论】:
【参考方案1】:消息被发送到服务总线,该服务总线根据计划排入队列(可接收)。所以,回答你的问题
-
没有
在队列中,只是无法接收
visibilityTimeOut
用于存储队列。请参考comparison doc 做出决定。
请注意,虽然您无法接收预定消息,但您可以peek 它们。
【讨论】:
感谢@pramodvalavala-msft。所以基本上行为明智的 visibilityTimeout 和 ScheduledEnqueueTimeUtc 没有区别。一个用于存储队列,另一个用于服务总线? 是的。那是正确的。可见性超时用于调度(入队)和锁(出队)。以上是关于发件人停止运行时 Azure 服务总线队列 ScheduledEnqueueTimeUtc 的行为的主要内容,如果未能解决你的问题,请参考以下文章