首页 > 解决方案 > 如何重播已通过 Azure 服务总线处理的消息?

问题描述

鉴于企业系统架构依赖于 Azure 服务总线的消息传递功能,如果系统状态损坏,是否可以重播命令以重新生成系统状态?

假设有命令发送到系统,这些命令由底层微服务处理,但由于服务中的错误,导致系统状态不正确。我们修复了错误并部署了新版本的服务。现在我们想清除当前状态并通过重播系统之前收到的命令来重新创建它。

据我了解,重播消息是事件溯源中提到的一个概念。当我在消息代理的上下文中搜索 Azure 服务总线等企业系统设计时,这种功能似乎并不常见。根据这篇文章,Solace 似乎支持消息重播。不过,我们更喜欢使用 Azure 服务总线 (SaaS) 而不是 Solace(这意味着必须获取 IaaS 资源)作为消息代理。

我能想到的唯一解决方案是将服务实现为一种“事件中心”,它监听所有消息,序列化它们,持久化它们。然后,如果必须重新处理消息,它将反序列化消息(可能是其中的一部分),并使用AMQP.Net lite 之类的客户端库按照 AMQP 将它们发送回 Azure 服务总线。

有没有我们可以使用的工具来代替自己构建这样的服务,它与 Azure 服务总线一起工作?

提前致谢!

标签: c#azuremessaging

解决方案


我认为您应该看看Azure 事件中心服务,它应该非常适合您的需求。

更新

在这种情况下使用Azure 事件中心的目的是存储通过服务总线到达的消息以供以后可能的“重播”(或重新处理),而不是替换服务总线。您可以通过以下方式使用Azure 函数来实现此目的:

接着

希望能帮助到你!


推荐阅读