0

我想介绍 SS Service Broker,

我有一个远程订单数据库和一个本地处理数据库,处理数据库上的所有活动都必须按顺序发生,这对于 Service Broker 来说似乎是一项完美的工作!

我已经建立了基础设施,我可以发送和接收消息,现在我正在研究处理的设计。正如我所说,一个订单的所有流程都需要按顺序完成,所以我将它们放在一个对话中。

其中一个过程是对外部平面文件数据的请求,然后我们等待(可能需要几天),然后在该文件返回时导入并处理该文件。我怎样才能处理一半的任务,然后在处理另一半之前等待平面文件返回。

我有一些想法,但我确定我在某处遗漏了一个技巧

1) 将所有队列项写入状态表并使用状态值——似乎去除了 SSSB 的一些灵活性并添加了另一层任务

2) 在我们取回数据之前保持交易开放——不理想

3) 让平面文件导入任务不断轮询文件是否出现——这似乎效率低下

管理此工作流程的最有效方法是什么?提前致谢

4

1 回答 1

0

在我看来,这就像责任链。据我所知,我们有以下工作流程。

1.) 消息处理。

2.) 等待外部文件,现在这可能是一个忙碌的等待,或者如果外部数据向您提供通知,那么我们实际上可以以非轮询方式进行。

3.) 一旦收到数据,然后处理数据。

所以我的建议是为每个部分使用 3 个不同的队列,当一个完成后,它将转发或将新消息放入链式队列。

我假设,一个订单处理不会中断另一个订单处理。

我在想带有 Windows 顺序工作流的 MSMQ,也可能是这项任务的候选人。

于 2010-08-05T07:46:15.767 回答