如何重播已通过Azure Service Bus处理的消息?

时间:2018-12-24 15:03:39

标签: c# azure messaging

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

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

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

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

是否可以使用任何工具代替自己构建与Azure Service Bus一起使用的服务?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为您应该看看Azure Event Hubs服务,它应该非常适合您的需求。

更新

在这种情况下,使用 Azure事件中心的目的是存储通过服务总线到达的消息,以便以后进行“重播”(或重新处理) ),而不是替换服务总线。 您可以通过将 Azure函数与以下功能配合使用:

然后

希望有帮助!