【问题标题】:AmqpItemReader and Dead Letter QueueAmqpItemReader 和死信队列
【发布时间】:2016-05-27 19:03:32
【问题描述】:

我正在尝试实现一个从队列中读取消息并在发生错误时将它们移动到死信的作业。我尝试使用事务处理通道,但它总是将消息重新排队。

当抛出异常时,Spring Batch 是否有任何自动方法来做到这一点?

【问题讨论】:

    标签: spring-integration spring-batch


    【解决方案1】:

    请参考 Spring AMQP 关于Dead Lettering

    您可以将RejectAndDontRequeueRecoverer 注入RabbitTemplate 以获取AmqpItemReader。因此,所有这些.receive() 都将被重试建议包裹,并且在耗尽消息的情况下将被拒绝到配置的 DLX。

    【讨论】:

    • 还是这样吗?我在 rabbitTemplate 上找不到任何采用 MessageRecoverer 的方法
    • 没错。取而代之的是setRecoveryCallback(RecoveryCallback<?> recoveryCallback)。但是更多我正在研究这个,我认为我的答案是错误的。如果RabbitTemplate.receive() 失败,则没有要恢复的消息。重试必须在下一个批处理步骤中应用。我假设它是一个处理器。
    猜你喜欢
    • 2012-05-02
    • 1970-01-01
    • 2014-08-13
    • 2018-10-28
    • 1970-01-01
    • 2021-10-07
    • 2023-01-19
    • 2010-10-26
    • 1970-01-01
    相关资源
    最近更新 更多