【发布时间】:2020-10-25 01:21:01
【问题描述】:
我正在使用rabbitmq使用spring amqp。
我有一个用例,我的消费者依赖另一个系统 - X 可能会停机。我想要的是通过以下方式处理当 X 关闭时出现的异常 - 在 XDownException 上,我想停止处理来自队列的消息,这样我就不会在停机期间丢失这些消息并继续重新排队消息,直到我停止收到 XDownException。这样,我确信当 X 关闭时我不会丢失任何消息,然后在 X 启动时自动恢复。
Fifo 是必须的。侦听器在处理消息时抛出 XDownException。监听器现在不知道事务,但如果有帮助,我们可以让它知道事务。 但是我不想为每一种例外都这样做...... 有没有办法用 spring amqp 做到这一点?
另外,还有比这种方法更好的方法吗? X 出现时我没有活动。
【问题讨论】:
-
问题 1:假设您正在使用消息驱动的 POJO 和 spring 侦听器容器,您是否期望在侦听器中处理接收到的消息期间出现 XDownException(以及可能的其他异常)?问题 2:您的侦听器交易感知吗?问题 3:FIFO(换句话说,保证顺序交付)对您来说是必须的吗?您的用例的解决方案将取决于这些问题的答案。请使用其他输入更新您的问题,以便其他人提供帮助。
-
用这些细节更新了问题
标签: java spring rabbitmq spring-amqp spring-rabbit