gpt4 book ai didi

queue - 是否可以确保在Rabbitmq队列中存在唯一消息?

转载 作者:行者123 更新时间:2023-12-04 03:33:33 25 4
gpt4 key购买 nike

基本上,我的消费者也是生产者。我们得到一个初始数据集,并将其发送到队列。消费者拿走一件商品并对其进行处理,从那时起,存在三种可能性:

  • 数据很好,并且为存储
  • 设置了“良好”队列
  • 数据不正确,已丢弃
  • 数据不好(尚未)或不好(尚未),因此数据被分解为较小的部分,然后发送回队列以进行进一步处理。

  • 我的问题与第3步有关,因为队列开始时增长很快,有可能将一条数据分解为在队列中重复的部分,而使用者继续处理它并最终陷入无限循环。

    我认为防止这种情况的方法是防止重复项进入队列。我无法在客户端执行此操作,因为在一个小时的过程中,我可能有许多核心处理数十亿个数据点(让每个客户端在提交之前对其进行扫描会使我的速度降低太多)。我认为这需要在服务器端完成,但是,正如我提到的,数据非常大,我不知道如何有效地确保没有重复。

    我可能会问不可能的事,但以为我会试一试。任何想法将不胜感激。

    最佳答案

    核心问题似乎是这样的:

    "...its possible that a piece of data is broken down into a part that's 
    duplicated in the queue and the consumers continue to process it and
    end up in a infinite loop."

    您可以只关注所有排队项目的唯一性,但是IMO是您需要重点解决的问题。防止无限循环的一种方法可能是在消息有效负载中具有一个“已访问”位,该位由消费者在重新排队该分割项之前设置。

    另一个选择是让使用者重新排队回到一个特殊的队列,该队列会稍有不同,以防止无限循环。无论哪种方式,您都应该通过将其作为应用程序策略的核心部分来解决该问题,而不是使用消息传递系统的功能来解决它​​。

    关于queue - 是否可以确保在Rabbitmq队列中存在唯一消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10155114/

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