消息的模式未按时间顺序到达

时间:2015-06-10 05:43:19

标签: messaging

是否有任何设计模式可以满足基于消息的架构消息未按时间顺序到达的情况?

举一个工作流程任务管理系统的例子,其中有两条消息:

  • 一个用于创建新工作流程任务项目;
  • 在工作项上发布状态的第二条消息(例如&#39; 已启动&#39; <#39; 已完成&#39;)

理论上,可以在新任务消息之前处理状态更改消息。关于如何管理这个的任何建议?

2 个答案:

答案 0 :(得分:0)

这种用例没有特别的设计模式。我唯一想到的就是你可以使用的简单Queue。我知道,每种编程语言都支持队列。

好吧,可能有一个你可能在这里使用的设计模式的抽象。它被称为State Pattern,您可以在其中定义状态,也可以是从开启状态到oter的过渡。因此,如果创建了状态消息,则使用您定义的状态标记此消息。在此标记之后,您在转换表中查找此状态,如果允许它为“输入状态”,则可以继续执行下一个状态。

但这只是一种'丑陋的解决方法'更容易使用一个简单的队列。

答案 1 :(得分:0)

如果我正确理解这个问题:

  

您希望在创建任务之前处理状态消息   可以在理论上制定。

所以你必须考虑两种可能的情况:

<强> 1。在任务创建消息之前收到状态消息:

创建相应的任务并将Task的状态设置为状态消息的值。也许在那之后,任务创建消息被收到。检查任务是否已创建,否则不执行任何操作,否则创建任务。

<强> 2。在状态消息之前收到了任务创建消息:

这是您创建简单任务的正常情况,如果您收到状态消息,则将任务状态设置为状态消息的值。