java - Spring Batch:从退出描述中删除运行时异常的堆栈跟踪
问题描述
在我的 Spring Batch 作业中,如果在步骤 ItemWriter 中存在未处理的异常(例如,由于保存到 DB 时数据错误而导致前主键违规),我的作业失败,然后我收到另一个错误,因为核心 spring 批处理无法更新失败的退出状态到 BATCH_JOB_EXECUTION 表。原因是出口描述具有完整的堆栈跟踪,大于 db 列的大小(2500)。
我应该如何在春季批处理中处理这些异常?如何将此退出描述修剪为更小的自定义消息?
谢谢。
解决方案
我应该如何在春季批处理中处理这些异常?
我将通过在编写数据之前验证数据是否符合 db 模式(正确的类型、正确的长度等)来解决根本原因。数据验证是项目处理器的典型用例。
如何将此退出描述修剪为更小的自定义消息?
您可以使用maxVarcharLength来扩大列长度,而不是修剪堆栈跟踪(这会使其不可读,因此您将无法看到堆栈跟踪末尾的异常的根本原因)。
推荐阅读
- javascript - 获取从引导选择选择器多选中选择的所有值
- maven - 如何使用 maven help:evaluate 在表达式中链接多个属性?
- c - Azure IoT SDK - 连接不被接受的问题
- c++ - 询问枚举的新语法(C++)
- javascript - 替换jQuery中的元素
- php - 在 Laravel 中,如何从我的视图文件中的多个 db 表中选择数据?
- pyspark - 如何将两个数据框连接在一起
- c - 如何使用C语言创建一个名称未知的目录
- vue.js - nginx - 在不更改规范 URL 的情况下将 facebook/bots 代理到不同的服务器
- javascript - 尝试实现回调函数的 Javascript 算法