【问题标题】:Unexpected data found error during BizTalk Simultaneous ReceiveBizTalk 同时接收期间发现意外数据错误
【发布时间】:2008-11-26 10:28:30
【问题描述】:

我有一个接收端口,其中两个 FILE 接收位置轮询同一个网络共享。接收位置之间的唯一区别是它们使用不同的文件掩码。它们都使用带有单个平面文件反汇编器组件的自定义管道。我有一个订阅接收端口的发送端口。 (这只是我可以重现问题的最小设置)。

在处理一组文件(最大 1mb 大小)时,管道偶尔会引发错误。仅当一次将多个文件复制到接收位置文件共享并且不定期发生时,才会发生这种情况。错误一般为:

解析传入文档时出错:“意外数据 在查找时找到:'\r\n' 当前正在解析的定义是 GIRM 文件。发生错误的流偏移量为 491540。 发生错误的行号是 2446。 发生的错误是 199。”。

检查显示的行号处的挂起消息,始终有 512 字节的数据与传入消息不同。这 512 字节的数据始终与同时使用的其他输入文件之一的数据相匹配!或者在极少数情况下,不正确的 512 字节数据是来自同时使用但在管道处理之后的文件的数据(即暂停的平面文件具有 512 字节的 xml 块!)。这 512 个字节在挂起的消息中的位置始终不一致。

认为 BizTalk 数据库以某种方式损坏,我将其删除并重新配置。成功处理了几百个文件后,问题又回来了。

这只发生在我们的测试机(VMWare 虚拟机)上,所以我怀疑机器在某种程度上是问题所在。但是机器在其他进程中没有报告其他错误似乎很奇怪。

【问题讨论】:

  • 您使用的是哪个版本的 BizTalk?你用的是interchange吗?由于听起来问题出在您的自定义管道中,我会尝试使用开箱即用的管道,看看是否会发生。

标签: biztalk


【解决方案1】:

有趣 - 我记得在 BizTalk 2004 中看到过类似的东西,但在 BT2006 中没有看到类似的东西。

听起来管道可能遇到线程问题 - 可能是由于从同一文件位置接收文件。

您是否尝试过任何高级文件接收位置属性?

我特别在想“阅读时重命名文件”复选框。如果问题出在非线程安全的流读取上,这个创建重命名文件的过程(我认为它只使用标准 IO 库)将允许 BizTalk 获得干净的流。

只是猜测 - 如果您找到解决方案,请报告!

【讨论】:

    【解决方案2】:

    这只发生在我们的测试盒(VMWare 虚拟机)上

    如果您无法在另一台具有相同配置的机器上成功重现此问题,我会将其标记为非问题或外部问题。同意前面提到的并发问题极不可能

    【讨论】:

      【解决方案3】:

      我不得不说我觉得这很奇怪,我很难相信进入 BizTalk 的 5 年(从 2004 年开始计算 :-)),文件适配器和标准反汇编程序存在线程问题。,

      文件是否通过网络进入提取位置?你使用什么文件掩码?是否有可能在文件传输完成之前接收位置之一正在接收文件?

      【讨论】:

        【解决方案4】:

        您说接收位置网络是网络共享 - 也许是网络问题?你能在本地驱动器上重现这个吗?

        【讨论】:

          【解决方案5】:

          还有一些想法……共享是 DFS 共享吗?你能把接收位置放在不同的主机上看看会发生什么吗?

          【讨论】:

            【解决方案6】:

            我们在访问共享的 VMWare 虚拟机上运行的程序存在类似问题。由于某种原因,文件似乎已损坏。

            这与 BizTalk 无关,它发生在内部开发的应用程序中。

            重启虚拟机可以暂时解决我们的问题。在我们的案例中,我们能够重新配置我们的流程以不使用共享。我们从来没有努力找到真正问题的解决方案。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-11-20
              • 1970-01-01
              • 2020-08-29
              • 2011-01-25
              • 2014-03-10
              相关资源
              最近更新 更多