【问题标题】:RabbitMQ: Move messages to another queue on acknowledgement receivedRabbitMQ:收到确认后将消息移动到另一个队列
【发布时间】:2015-05-22 18:25:11
【问题描述】:

我有两个队列(没有交换),比如说队列 A 和队列 B。

一个解析器将消息放在队列 A 上,由 ElasticSearch RabbitMQ 河消费。

我现在想要的是当 ES 河向队列 A 发送 ack 时将消息从队列 A 移动到队列 B,这样我就可以在 ack 的消息中进行其他处理,确保 ES 已经处理他们。

RabbitMQ 有什么方法可以做到这一点吗?如果没有,是否有任何其他设置可以保证消息在被 ES 处理后仅在队列 B 中?

提前致谢

【问题讨论】:

    标签: elasticsearch rabbitmq message-queue


    【解决方案1】:

    我认为 AMQP 或 rabbitmq extensions 都不支持此功能。

    1. 您可以放下河流,让您的消费者也发布到 elasticsearch。

    2. 由于正常行为是队列为空,您只需重试几次从 elasticsearch 读取条目(使用指数退避),因此即使 elasticsearch 失去初始竞争,它也会退避一点并且然后您可以执行任务。这可能需要调整客户端中的 prefetch_size/count。

    【讨论】:

    • 嗯,一些cmets:1.我唯一的消费者是河流,所以如果我放弃它,我不会有任何消息被索引到elasticsearch 2.“队列是空的”是什么意思?现在,在我的测试环境中,我的 River 索引比解析器输出到查询的速度更快。但在生产环境中肯定不会出现这种情况,因为解析器的输出会非常非常高。
    • 我正在考虑让第二个消费者为相同的消息做“河流”目前正在做的工作以及您需要的其他后处理步骤。
    猜你喜欢
    • 1970-01-01
    • 2018-07-28
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    相关资源
    最近更新 更多