【问题标题】:SQL to resume suspended messages in orderSQL 按顺序恢复挂起的消息
【发布时间】:2015-06-08 20:00:51
【问题描述】:

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

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

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

【问题讨论】:

    标签: biztalk biztalk-2009 biztalk-deployment


    【解决方案1】:

    如果您有一个有序的要求(您有或没有),则发送端口应标记为有序交付

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

    【讨论】:

    • 谢谢,这正是我需要知道的。消息通常在收到消息时进行处理,因此未设置按顺序发送。由于在安装过程中会产生积压,因此强制订购的需求是新的。
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 如果您恢复多条挂起的消息,它会按什么顺序处理它们?需要按发生的顺序处理对单个项目的多次更新。
    • 您是否在发送端口上启用了订购递送?然后按照它们被放入消息框的顺序,实际上您只会看到一个暂停的实例,所有这些实例都在其中排队。如果您没有启用它,那么即使正常运行也不能保证它们会被订购。
    • 不幸的是,它没有订购交货。它可能是打开它的一个选项。谢谢
    【解决方案3】:

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

    【讨论】:

    • 有趣的想法。我会尝试一下,看看我是否可以让它工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多