我想介绍SS Service Broker,
我有一个远程订单数据库和一个本地处理数据库,处理数据库上的所有活动都必须按顺序发生,这对Service Broker来说似乎是一个完美的工作!
我已经设置了基础设施,我可以发送和接收消息,现在我正在查看处理的设计。正如我所说,一个订单的所有流程都需要按顺序完成,所以我会将它们放在一个对话中。
其中一个进程是对外部平面文件数据的请求,然后我们等待(可能是几天),然后在它返回时导入并处理该文件。如何处理一半的任务,然后在处理另一半之前等待平面文件返回。
我有一些想法,但我确定我在某个地方错过了一个技巧
1)将所有队列项写入状态表并使用状态值 - 似乎删除了SSSB的一些灵活性并添加了另一层任务
2)保持交易开放,直到我们收回数据 - 不理想
3)让平面文件导入任务不断轮询文件显示 - 这似乎效率低下
管理此工作流程的最有效方法是什么? 提前谢谢
答案 0 :(得分:0)
在我看来,这就像责任链。据我所知,我们有以下工作流程。
1。)消息处理。
2。)等待外部文件,现在这可能是忙碌的等待,或者如果外部数据为您提供通知,那么我们实际上可以非轮询方式执行此操作。
3.)收到数据后再处理数据。
所以我的建议是为每个部分使用3个不同的队列,当一个完成后,它会转发或在链接的队列中放入新的消息。
我假设,一个订单处理不会中断另一个订单处理。
我在考虑使用Windows Sequential Work流程的MSMQ,也可能是此任务的候选者。