我正在编写一个将Mongo用于持久性的系统和用于消息总线/事件排队的RabbitMQ,并且我试图找出在出版方面对失败具有弹性的最佳方法。
我可以想到三种情况:
最后一个案例是我感兴趣的案例,我很想知道别人如何解决这个问题,因为XA不是一个选择(而且我不会这样做)。无论如何都要想要性能开销。)
我能想到几个解决方案:
其他人是否可以阐明如何在持久层和消息总线之间提供某种一致性?
答案 0 :(得分:2)
1 永远不是一个好主意,"过去X时间的概念"一旦你引入了多线程或多进程系统,那么它就会崩溃,并且当这个时间和#34;生成(如果某些请求需要更长时间来处理其他请求,那么"以后"时间可能会在"之前和#34;时间之前写入持久性存储)
2 基本上是Idempotence,如果做得好,它是一种非常适合设计容错系统的模式