基于队列的系统的体系结构

时间:2015-05-27 19:33:42

标签: c# message-queue data-exchange

我有一个由12个Windows服务组成的系统,例如A,B ...... M.他们只通过队列交换信息(在这种情况下是MSMQ)。系统以线性方式工作 - 外部方呼叫A,它在B消耗的队列上发布消息。 AResult说,输出的格式是固定的。 B读取AResult,做一些处理并将BResult发布到服务C等等。

我现在遇到的问题是管道中的服务需要上一步未提供的数据。例如。服务F需要BResult的财产。

我考虑了一些替代方案,但它们都有缺点:

  1. 传递所有先前结果的字典。这样说F会 能够阅读AResult,BResult等。问题就是这样 引入高耦合,任何地方的任何变化都可以打破其他 服务。

  2. 拥有一个不同服务填充的全局God对象。我之前做过类似的事情,结果非常复杂。

  3. 维护最有用数据的特殊对象,并将其传递给每个结果。例如。 D接收CResult和GlobalContextData并发布DResult和GlobalContextData。问题是决定在上下文中包含并维护它。

0 个答案:

没有答案