【发布时间】:2019-02-22 02:13:28
【问题描述】:
服务总线documentation 声明“可以通过使用会话状态来存储应用程序状态以及使用事务以原子方式接收消息并更新会话状态来支持 At-Most-Once 语义。”这里的“会话”似乎指的是服务总线的messaging sessions,其中包括存储任意状态的能力。此机制允许您在事务中注册状态更新以及对消息的操作。
我知道如何使用它来可靠地维护正在使用消息会话的应用程序的状态。如果您可以更新应用程序状态并在同一事务中完成一条消息,则正确实现的应用程序可能会在执行的任何地方死掉,并且在恢复时将保证继承导致成功、按顺序继续会话处理的状态(示例代码是here,虽然奇怪的是doesn't actually use transactions,虽然我知道它是如何实现的以及它会完成什么)。
我没有看到这些如何转化为“最多一次”交付。服务总线的任何内容,包括会话状态的更新,都不能注册到分布式事务中。那么“最多一次”究竟是什么意思,它完成了什么? Service Bus 的哪些显着特点使它能够在Azure Storage queues do not 时支持“最多一次”交付?
【问题讨论】:
标签: azure message-queue azureservicebus