消息队列中的消息是并行执行的,那如果消息之间有顺序依赖怎么办
先有一个MQ系统,然后再利用这个MQ写一个WORKFLOW系统。
Workflow Patterns Home Page
在MQ层面支持消息的顺序处理开销太大,为了极少量的需求,增加整体上的复杂度得不偿失。所以,还是在应用层面处理比较好。
如果queue只有单一worker,且能通过发布端控制或者通过MQ本身的routing机制将相同组的消息发到同一个queue,那就相对比较简单。
如果queue有多个worker,那恐怕只能通过在worker端通过共享的临时存储确保同一组的消息按顺序处理了,上一个消息没处理完,如果worker收到后面的消息的话先不处理,稍后重发到queue上,直到按顺序一个个处理完或者等到消息过期。