SQL按顺序恢复挂起的消息



我们即将部署一个通过BizTalk处理大量消息的系统。由于这些消息是累积更新,它们需要在部署中断期间排队,然后在部署完成时按顺序处理。因为它们的数量可能很大,所以很难手动完成。

一个可能的解决方案是保持发送端口停止并让消息暂停。当部署完成后,我们可以按顺序恢复它们。

是否有可能针对BizTalk消息框数据库运行SQL脚本(或工具),以便按照接收的顺序恢复特定端口的挂起消息?

如果您有一个订购的需求(您要么有或没有),那么发送端口应该标记为订购的交付

如果是,那么当您启动一个停止发送端口时,消息将按照它们提交的顺序进行处理。

如果您停止端口(但使其保持订阅状态)并在之后重新启动它,它应该恢复消息本身,或者如果不是,那么进入管理控制台并批量恢复它们就足够简单了。

但是,如果发送端口的响应消息也通过运行的Orchestrations订阅了,则您将无法取消部署这些Orchestrations,直到它们全部完成,因此在此场景中停止发送端口将不起作用。

有时一个选项是,如果初始端口是单向接收,则停止接收位置并让一切完成。然后,您可以停止应用程序,重新部署并重新启动它,发送端口将拾取所有等待处理的消息。

如果上述方法不可行,您可能需要考虑并行部署,即增加解决方案中所有程序集的版本号,以便同时部署两个版本,然后允许旧版本完成运行,但让新版本处理任何新消息。

更好的选择是向msmq发送消息,通常不需要额外的编码。您可以使用msmq适配器将消息路由到msmq,然后在部署后按照msmq适配器允许的顺序接收它们。只要确保你在QA环境中做一个小测试,然后再在生产环境中做。

最新更新