基本上我的消费者也是生产者。我们得到一个初始数据集并将其发送到队列。消费者拿走一件物品并处理它,从那时起有 3 种可能性:
- 数据很好,并为存储设置了一个“好”队列
- 数据不好并被丢弃
- 数据不好(还)或坏(还),因此数据被分解成更小的部分并发送回队列以进行进一步处理。
我的问题在于第 3 步,因为队列起初增长得非常快,因此有可能将一段数据分解为在队列中重复的部分,并且消费者继续处理它并最终陷入无限循环。
我认为防止这种情况的方法是防止重复进入队列。我不能在客户端执行此操作,因为在一个小时的过程中,我可能有许多核心处理数十亿个数据点(让每个客户端在提交之前对其进行扫描会使我的速度太慢)。我认为这需要在服务器端完成,但是就像我提到的,数据非常大,我不知道如何有效地确保没有重复。
我可能会问不可能的问题,但我想我会试一试。任何想法将不胜感激。