RabbitMQ请求响应消息确认

时间:2017-09-07 09:42:59

标签: java spring rabbitmq amqp spring-cloud

我正在使用带有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 :(得分:0)

为了实现这个过程,我们必须使用Direct-to way,但我仍然不确定。 一旦到达解决方案,我会通知您。