我正在使用spring-kafka-2.2.7.RELEASE,并试图了解如何配置ErrorHandlingDeserializer2以在反序列化期间处理异常并将其日志记录/发送给DLT。我正在根据以下文档设置用户配置 https://docs.spring.io/spring-kafka/docs/2.2.0.RELEASE/reference/html/_reference.html#error-handling-deserializer。
我的问题是,我们如何处理反序列化过程中失败的异常和用户记录?
答案 0 :(得分:1)
考虑将Apache Kafka $newArray = array();
$arr = array();
foreach($array as $key => $value){
if($key == "file_path"){
$arr[$key] = $value;
$newArray[] = $arr;
}
}
升级到Spring。
这是一位医生如何满足您的要求:https://docs.spring.io/spring-kafka/docs/2.3.0.RELEASE/reference/html/#dead-letters
从2.3版开始,与
2.3.1
结合使用时,发布者(读取为ErrorHandlingDeserializer2
)会将死信生产者记录中的记录DeadLetterPublishingRecoverer
恢复到无法反序列化的原始值。以前,value()
为空,用户代码必须从消息头中解码value()
。另外,您可以向发布者提供多个DeserializationException
;例如,如果要发布KafkaTemplate
中的byte[]
,以及使用与成功反序列化的记录不同的序列化器的值,则可能需要这样做。这是使用DeserializationException
来配置发布者的示例,其中KafkaTemplate
使用String和byte []序列化器:
因此,我相信该文档甚至可以为您提供在2.2.x
版本中进行操作的线索。
通过这种方式,我们始终建议至少升级到该代的最新版本。当前一个是2.2.10
:https://spring.io/projects/spring-kafka#learn