【发布时间】:2021-10-04 00:40:17
【问题描述】:
我正在使用 Azure ServiceBus 创建一个事件系统,我发现事件通常会在我将它们设置为运行的预定时间可靠地命中 - 所以如果事件“pop”应该在下午 12:30 运行,它通常会届时将交付给我的收件人。
我想知道是否可以保证事件总是在预定的时间内触发,还是建议的时间更长,系统可能会堵塞和积压,从而导致形成更长的队列?
【问题讨论】:
标签: azure servicebus
我正在使用 Azure ServiceBus 创建一个事件系统,我发现事件通常会在我将它们设置为运行的预定时间可靠地命中 - 所以如果事件“pop”应该在下午 12:30 运行,它通常会届时将交付给我的收件人。
我想知道是否可以保证事件总是在预定的时间内触发,还是建议的时间更长,系统可能会堵塞和积压,从而导致形成更长的队列?
【问题讨论】:
标签: azure servicebus
messages(由 Service Bus 处理)和 events 之间有相当多的区别,您可以在文章 Choose between Azure messaging services - Event Grid, Event Hubs, and Service Bus 中看到。
事件是条件或状态更改的轻量级通知。事件的发布者对事件的处理方式没有任何期望。事件的消费者决定如何处理通知。事件可以是离散单元或系列的一部分。
[...]
消息是服务产生的原始数据,可以在其他地方使用或存储。该消息包含触发消息管道的数据。
听起来您需要一种可靠的方法来让计时器触发器在特定时间执行。服务总线不是正确的服务,因为“消息入队时间并不意味着消息将在那时发送。它会入队,但实际发送时间取决于队列的工作负载及其状态。” (见BrokeredMessage.ScheduledEnqueueTimeUtc Property)。
为了以可靠的方式处理触发,您可以使用Logic Apps(如果您想创建低代码/无代码)或Azure Functions(用于带代码的无服务器解决方案)等服务。
如果您确实在寻找事件,请考虑Event Grid。
【讨论】: