我的编排有一个发送-接收端口,在找到发送形状之前,所有被操作的消息都是完全相同的。即,我最终通过发送-接收端口发送 Oracle 数据库的消息是相同的。
本质上,我正在向数据库发送一个请求,该请求说明我希望从哪个表中获得最新更改以及该表的所有者是谁。正如我所提到的,在比较一个有效的更新和一个无效的更新时:到目前为止,两个请求消息都是相同的。
问题:来自 db 的响应可能是空的,而且不应该是空的。我期待表中的完整行发生了变化,有时我什么也没有收到。
详细信息:我只更改最简单的字段来触发这些测试,并且总是相同的字段 - 我从 99 到 98 到 97 到 98 递减或递增的整数字段......等等。一个数字可能第一次工作但不是第二个,有时是相反的。
任何其他字段都可能产生此错误。
更多详细信息...:看来 Oracle 的功能可能有问题。即,它处理时间戳的方式可能会导致 Oracle 返回一个空记录,因为它假定 Biztalk 已经收到更改通知。在查看数据库的内部时,我们看到我的最后一次更改尝试都被标记为完全相同的秒(请注意,实际上是不可能的)。
看起来,当我向 Oracle 发送一条消息时,它会执行两次似乎导致错误的事情(顺便说一下,有问题的表上没有触发器)。在我的编排中,我在发送消息之前写入事件日志,并且该消息只写入一次......
似乎这可能是一个Oracle问题。现在,始终如一的工作领域不起作用,而其他领域有时也起作用-我想这是以前抽签的运气。
为什么我认为会发生这种情况:我要求它给我(数据库告诉我)已经改变的客户,并且它(不知何故 - 这是个谜)运行它的检索两次。它工作的时间是第一次检索将消息返回给 Biztalk,因此具有实际信息。如果不是,那是因为第二次检索要求最新的更改而没有,因为第一次检索已经得到它们,因此返回一个空记录。