【发布时间】:2021-12-14 12:22:06
【问题描述】:
假设(但更简单)的场景:
- 我的系统中有很多订单。
- 我有影响这些订单的外部触发器(例如 webhook)。它们可能并行发生,并由集群中的不同实例处理。
- 在单个顺序的范围内,我想确保按顺序处理这些事件以避免竞争条件、版本冲突等。
- 可以(并且应该)并行处理不同订单的事件
我目前正在考虑利用 RabbitMQ 的类似设置:
- 为每个订单使用一个队列(动态创建)
- 如果发生事件,将其放入该队列中
这些队列将是短暂的,因此我不会最终获得数百万个队列,但无论如何它应该可以扩展(如果项目大幅增长,我们可以说更低的一位数)。问题是,就 RabbitMQ(或类似)系统而言,这是否是绝对的反模式,或者是否有更好的解决方案来确保顺序执行。
谢谢!
【问题讨论】:
标签: rabbitmq fifo sequential-workflow