0

我有一个自定义接收管道,它将一个大文件分解为单个文件并将它们发送到消息框,并且编排将订阅这些消息并处理它们。在我的编排中,我有几个表达式形状执行 .net dll 中的方法。我还在每一步都添加了日志记录。在任何给定时间,消息框都可能充斥着数百条消息。我注意到有些消息被执行了多次。我加倍检查以确保我没有生成多条相同的消息。这让我相信它可能与水合作用有关。根据我的研究,当一个编排被水合时,它将保持它所在的形状以及 dll 的状态。当它恢复时,它将恢复它的持久形状,而不是从头开始。

有没有人看到这个问题?我可以做哪些测试/配置来验证/纠正这个问题?!

这是编排的一部分

这是每个表达式形状调用的 .net 方法

非常感谢!

安吉

4

3 回答 3

1

我认为您将水合作用与持久性点混淆了。字母结合一些 try\catch 逻辑可以使编排从最新的持久性点重新开始。您没有发布您的编排的完整图片,但我看到了一个范围。你那里有任何异常处理吗?

无论如何,如果没有明确的发送形状,编排就无法将任何消息发布到消息框。还要查看您是否安装了最新的 SP 和累积更新。

于 2011-11-16T08:22:19.823 回答
0

有趣的问题:)

当编排空闲等待某事时,就会发生水合和再水合。因此,它不应该发生在处理文件的过程中。

  • 只是为了确保这不是数据质量问题,请检查输入文件中是否没有重复数据。
  • 您可以使用限制功能来确保一次只处理一个文件。这将消除一个潜在的错误源。
  • 你可以做的另一件事是检查你的错误处理,当第一次调用失败时你有任何重试逻辑吗?如果 Biztalk 也在重试,这可以解释重复。
于 2011-11-13T19:52:07.437 回答
0

在这种情况下,我建议在管道阶段为您生成的每条新消息推广 2 个新的自定义属性 -

1) 消息总数 2) 当前消息数

通过这种方式,您可以在编排开始或您决定的任何其他阶段跟踪、打印或保存每个消息编号,这可以使工作更轻松。

于 2011-11-22T10:06:09.130 回答