gpt4 book ai didi

java - MongoDB 和 RabbitMQ 之间的一致性

转载 作者:行者123 更新时间:2023-11-30 03:35:22 24 4
gpt4 key购买 nike

我正在编写一个系统,该系统将利用 Mongo 实现持久性,利用 RabbitMQ 进行消息总线/事件队列,并且我正在尝试找出在发布端应对故障的最佳方法。

我能想到三种情况:

  1. 一切正常 - 一致
  2. 一切都失败了 - 一致
  3. 部分有效,以较晚发生的为准已过时 - 不一致

最后一个案例是我感兴趣的,我很想知道其他人如何解决这个问题,因为 XA 不是一个选项(而且我也不希望有性能开销)。

我能想到几个解决方案:

  1. 向 Mongo 文档添加“lastEvent”(或类似的)字段。定期扫描lastEvent
  2. 在 Mongo 中持久化之前在 Rabbit 中触发事件,并允许安全处理可能未实际发生的事件(真的不喜欢这种方法)

其他人能否阐明如何跨持久层和消息总线提供某种一致性?

最佳答案

1 从来都不是一个好主意,一旦引入多线程或多进程系统,并且当生成该“时间”时,“最后 X 时间”的概念就会失效(如果某些请求比其他请求需要更长的时间来处理,那么“稍后”时间可能会在“较早”时间之前写入持久存储)

2 基本上是 Idempotence ,如果做得正确,这种模式非常适合设计容错系统

关于java - MongoDB 和 RabbitMQ 之间的一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28057912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com