首页 > 解决方案 > 如何在 DLQ 中自定义标头消息异常

问题描述

我想在死信队列中自定义异常消息或添加带有自定义异常消息的新标头参数。

现在我在死信队列消息的标题中得到了原始堆栈跟踪

@StreamListener(Sink.INPUT)
public void consumer(Message<Content> message) {
    myService.update(message.getPayload().getData().getId());
}

messageInputChannel:
    consumer:
        enableDlq: true
        dlqName: error.message
        backOffInitialInterval: 15000 # the interval is 15s between each time retrying
        backOffMaxInterval: 30000 # the max interval is not over 30s between each time retrying
        maxAttempts: 3
        headerMode: raw

标签: apache-kafkaspring-cloud-stream

解决方案


你的问题不清楚;使用 RabbitMQ binder,您可以设置republishToDlq获取添加到消息中的异常信息。

请参阅文档

重新发布到Dlq

默认情况下,重试次数用尽后失败的消息将被拒绝。如果配置了死信队列 (DLQ),RabbitMQ 会将失败的消息(未更改)路由到 DLQ。如果设置为 true,则绑定器将失败的消息重新发布到 DLQ,并带有其他标头,包括异常消息和最终失败原因的堆栈跟踪。另请参阅 frameMaxHeadroom 属性。

默认值:假

使用Kafka binder,异常信息总是添加到headers中的死信记录中;目前没有定制该信息的机制。


推荐阅读