Rabbit MQ事件并发和同步

在我们的开发过程中,我们遇到以下情况:产生事件链的事件按照一定的顺序产生:比如说创buildItem1,Update Item1,Finish Item1,Create Item2,Update Item2,Finish Item2。

请记住,项目1和2的事件是并行发送的。 我们需要为每个项目顺序处理项目1和2的事件,而不阻塞不相关的操作,例如创build项目1和创build项目2可以并行运行,而CreateItem1和更新项目1必须按顺序运行。

主要问题是我们如何才能实现这样的行为,而不是为每个项目创build一个专门的队列? 项目的数量是未知的。 有多个生产者和多个消费者处理事件。

答案很简单:不要并行发布这些事件。 如果Update Item事件必须在Create Item事件之后处理,那么Create Item使用者在完成处理Create Item事件后应该发出Update Item事件是自然的。

顺便说一下:每个项目都有一个单独的队列,只有当你在这样的队列上有一个消费者,并且如果你能保证事件按照正确的顺序发送的话。