我有一个带有两个队列的设置(没有交换),比方说队列A和队列B。

一个解析器将消息放入队列A,由ElasticSearch RabbitMQ river使用。

现在,我想要的是在ES River将确认发送到队列A时将消息从队列A移到队列B,以便我可以在确认消息中进行其他处理,确保ES已经处理了它们。

RabbitMQ中有什么方法可以做到这一点?如果不是,是否有其他设置可以保证我仅在ES处理完消息后才将消息放入队列B中?

提前致谢

最佳答案

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

  • 您可以顺其自然,让您的消费者也可以发布到elasticsearch。
  • 由于正常行为是队列为空,您可以执行几次重试以从Elasticsearch中读取条目(具有指数回退),因此,即使Elasticsearch失去了初始竞争,它也会回退一点,然后您可以执行任务。这可能需要调整客户端中的prefetch_size / count。
  • 09-20 11:06