【发布时间】:2016-05-27 19:03:32
【问题描述】:
我正在尝试实现一个从队列中读取消息并在发生错误时将它们移动到死信的作业。我尝试使用事务处理通道,但它总是将消息重新排队。
当抛出异常时,Spring Batch 是否有任何自动方法来做到这一点?
【问题讨论】:
标签: spring-integration spring-batch
我正在尝试实现一个从队列中读取消息并在发生错误时将它们移动到死信的作业。我尝试使用事务处理通道,但它总是将消息重新排队。
当抛出异常时,Spring Batch 是否有任何自动方法来做到这一点?
【问题讨论】:
标签: spring-integration spring-batch
请参考 Spring AMQP 关于Dead Lettering。
您可以将RejectAndDontRequeueRecoverer 注入RabbitTemplate 以获取AmqpItemReader。因此,所有这些.receive() 都将被重试建议包裹,并且在耗尽消息的情况下将被拒绝到配置的 DLX。
【讨论】:
setRecoveryCallback(RecoveryCallback<?> recoveryCallback)。但是更多我正在研究这个,我认为我的答案是错误的。如果RabbitTemplate.receive() 失败,则没有要恢复的消息。重试必须在下一个批处理步骤中应用。我假设它是一个处理器。