0

我正在运行 BizTalk 2006,并且我有一个业务流程,它接收在 BTS.MessageType 上相关的一系列消息(订单)。在我的延迟形状上,我检查了直到午夜的时间,也就是批次中断。我偶尔会在循环结束后收到一条消息,这正在创建僵尸消息。我仍然需要处理这些消息,但是在编排的新实例中。我需要一些关于如何优雅地处理这个问题的想法。

4

1 回答 1

3

一种选择是关联日期(除了 BTS.MessageType)

您将必须创建一个管道组件来宣传没有时间的日期。但是可能存在一些时间窗口,消息会“随机”发送到旧实例或新实例(例如,如果您有多个时间略有不同的 BizTalk 服务器,或者系统时钟与 NTP 源重新同步)。为了安全起见,请等待几分钟,然后再结束前一天的实例。

如果旧实例和新实例之间的重叠窗口存在问题,则应改为关联另一个每天仅更改一次的值,例如存储在数据库中并由管道组件提升的 Guid。

否则,我已经在过去的项目中成功地使用了您的“hackish”解决方案,只要您可以容忍一个小窗口,其中消息排队并且每天几分钟不立即处理。就我而言,这很好,因为消息是由美国用户在工作日产生的,并通过 FTP 或 MSMQ 发送。但是,如果您有通过 Web 服务发送消息的国际用户,那么您在一天中可能没有时间收不到任何东西,并且 Web 服务将无法将消息排队以供以后处理。

于 2013-06-04T22:07:04.253 回答