我们以Spring Remoting with AMQP的风格使用Spring AMQP。我在每封邮件上设置x-message-ttl
,以便在无法立即传递给消费者时立即过期。这很好用,但是,在使用replyTimeout
失败之前,它会让生产者等待RemoteProxyFailureException
的指定值(如果我没记错的话)。如果无法传递消息(如果实际收到消息只等待超时),有什么方法可以让生产者立即失败吗?
答案 0 :(得分:1)
架构的松散耦合意味着没有迹象表明生产者到期。
曾经有一个immediate
标志,但它是removed in rabbitmq 3.0。
可能的解决方案是配置DLX / DLQ,以便其他消费者可以使用过期的消息,这可以向客户端返回异常。
修改强>:
只需让fallback使用者实现相同的接口并让它抛出异常。