使用 Spring AMQP 确认交付
Confirming Deliveries with Spring AMQP
我们正在使用 Spring AMQP Spring Remoting with AMQP 的风格。我在每条消息上都设置了 x-message-ttl
,这样如果它不能立即发送给消费者,它就会立即过期。这很好用,但是,它让生产者在 RemoteProxyFailureException
失败之前等待 replyTimeout
的指定值(如果我没记错的话)。如果消息无法传递,有什么方法可以让生产者立即失败(只有在实际收到消息时才等待超时)?
架构的松散耦合意味着生产者不会收到过期指示。
曾经有一个 immediate
标志,但现在是 removed in rabbitmq 3.0。
可能的解决方案是配置一个 DLX/DLQ,这样过期的消息可以被另一个消费者使用,这可以 return 客户端的一个例外。
编辑:
只需让回退消费者实现相同的接口并让它抛出异常。
我们正在使用 Spring AMQP Spring Remoting with AMQP 的风格。我在每条消息上都设置了 x-message-ttl
,这样如果它不能立即发送给消费者,它就会立即过期。这很好用,但是,它让生产者在 RemoteProxyFailureException
失败之前等待 replyTimeout
的指定值(如果我没记错的话)。如果消息无法传递,有什么方法可以让生产者立即失败(只有在实际收到消息时才等待超时)?
架构的松散耦合意味着生产者不会收到过期指示。
曾经有一个 immediate
标志,但现在是 removed in rabbitmq 3.0。
可能的解决方案是配置一个 DLX/DLQ,这样过期的消息可以被另一个消费者使用,这可以 return 客户端的一个例外。
编辑:
只需让回退消费者实现相同的接口并让它抛出异常。