gpt4 book ai didi

java - mongo中的原子读取和删除

转载 作者:可可西里 更新时间:2023-11-01 10:49:15 24 4
gpt4 key购买 nike

我是 mongo 的新手,所以我在这里尝试实现的目标可能无法实现。到目前为止,我的研究尚无定论...

我的场景如下:我有一个可能有多个实例正在运行的应用程序。这些实例正在处理一些数据,当处理失败时,它们会将失败项的 ID 写入 mongo 集合(“错误”)。

有时我想重新尝试处理这些项目。因此,应用程序会以固定的时间间隔从集合中读取所有 ID,然后删除所有记录。现在,这是一个明显的竞争条件。两个实例可能读取完全相同的数据,这将使要完成的工作加倍。一些ID也可能像这样被遗漏。

我的问题如下:有没有什么方法可以以分布式原子方式读取和删除这些记录?我正在考虑锁定集合,但到目前为止我在 java 驱动程序的文档中没有找到支持。我还尝试寻找类似 findAndDrop() 的方法,但到目前为止还没有成功。

我知道领导者选举等技术很可能会解决这个问题,但我想看看是否可以用更简单的方式完成。

最佳答案

您可以将 BlockingQueue多生产者-单一消费者 方法结合使用,因为您有多个生产者来生成 ID 并通过单一消费者删除它们。

关于java - mongo中的原子读取和删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44429282/

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