0

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

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

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

4

3 回答 3

1

如果您有一个有序的要求(您要么做要么不做),那么 Send Port 应该被标记为Ordered Delivery

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

于 2015-06-11T12:07:01.413 回答
0

如果您停止端口(但保持订阅状态)并在之后再次启动它,它应该恢复消息本身,或者如果不是,它很简单,可以进入管理控制台并批量恢复它们。

但是,如果发送端口的响应消息也通过运行编排订阅,您将无法取消部署编排,直到它们全部完成,因此在这种情况下停止发送端口将不起作用。

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

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

于 2015-06-08T20:38:31.267 回答
-1

更好的选择是将消息发送到 msmq,通常不需要额外的编码。您可以使用 MSMQ 适配器将消息路由到 msmq,然后在部署后按顺序接收它们,因为 MSMQ 适配器允许按顺序接收。在生产环境中进行之前,请确保您在 QA 环境中进行了小型测试。

于 2015-06-09T00:01:37.487 回答