首页 文章

RabbitMQ请求响应消息确认

提问于
浏览
3

我正在使用带有Java和Spring Framework的RabbitMQ,我有一个 生产环境 者和一个消费者,这两个实例都会运行多个实例,但是每个请求都会生成一个消息,消费者应该处理这个消息,消费者应该能够回答同一个 生产环境 者(与持有请求完全相同)和答案 .

所以要求是:

  • 生产环境 者将收到HTTP请求,然后它将生成一条消息并将其推送到队列 .

  • 消息内容一次只能由一个消费者处理,其他消费者不应该处理相同的消息 .

  • 该消息应该等待确认 .

  • 任何消费者都可以处理消息,但是当消费者失败时,消息应该返回队列,因为我们需要能够从中恢复 .

  • 完成后,消费者应该回复与现在持有请求完全相同的 生产环境 者 .

  • 如果 生产环境 者失败,那个请求也应该失败,所以消费者应该在回复之前检查 生产环境 者是否还活着,如果它不可用那么它应该失败 .

所以:

请求 - > 生产环境 者1 - >队列 - > consumer1

  • Producer1等待

  • consumer1失败

  • 消息回队列

  • consumer2获取消息并继续1离开

  • consumer2完成并确认请求消息并发送响应

  • consumer2发现producer1失败,因此需要发送失败信号

目前,我所能想到的只有:1 . Direct Reply Pattern:但问题是这条消息没有ack要求,但我需要能够从消费者失败中恢复2. The RPC Model:这没有解决 生产环境 者失败

有没有其他解决方案?我做错了吗?

1 回答

  • 0

    似乎要实现这个过程我们必须使用直接方式,但我仍然不确定 . 一旦到达解决方案,我会通知您 .

相关问题