首页 > 解决方案 > Spring Batch:从退出描述中删除运行时异常的堆栈跟踪

问题描述

在我的 Spring Batch 作业中,如果在步骤 ItemWriter 中存在未处理的异常(例如,由于保存到 DB 时数据错误而导致前主键违规),我的作业失败,然后我收到另一个错误,因为核心 spring 批处理无法更新失败的退出状态到 BATCH_JOB_EXECUTION 表。原因是出口描述具有完整的堆栈跟踪,大于 db 列的大小(2500)。

我应该如何在春季批处理中处理这些异常?如何将此退出描述修剪为更小的自定义消息?

谢谢。

标签: javaspringspring-batch

解决方案


我应该如何在春季批处理中处理这些异常?

我将通过在编写数据之前验证数据是否符合 db 模式(正确的类型、正确的长度等)来解决根本原因。数据验证是项目处理器的典型用例。

如何将此退出描述修剪为更小的自定义消息?

您可以使用maxVarcharLength来扩大列长度,而不是修剪堆栈跟踪(这会使其不可读,因此您将无法看到堆栈跟踪末尾的异常的根本原因)。


推荐阅读