我在grails项目中使用spring batch,并安装了grails插件使其工作:grails-spring-batch
我使用阅读器,处理器和编写器来完成一项简单的工作,并且工作正常。
但是我想在我的工作步骤中添加侦听器(读取器,处理器和写入器),以便更好地处理错误。
但是我无法让听众习惯!我认为我可能会滥用用于定义bean的dsl。通过对dsl的不同尝试,我有时会在运行时出错,或者有时没有错误,但未使用侦听器。
您是否知道grails-spring-batch插件当前是否允许定义侦听器?如果是,它如何工作?
这是我的spring batch conf,它使用grails插件提供的DSL:
batch.job(id: 'simpleJob') {
batch.step(id: 'myStep') {
batch.tasklet{
batch.chunk(
reader: 'myReader',
processor: 'myProcessor',
writer: 'myWriter',
'commit-interval': 1,
listeners:
batch.listener(
ref: "myReaderListener"
)
)
}
}
}
编辑:一个我没有想到的简单解决方案:使我的读者实现 ItemReadListener,,它带来了 onError 方法,这正是我想做的。
但是,如果需要将侦听器逻辑放在另一个bean中,我的问题仍然存在。
最佳答案
如评论中所述,应在tasklet
上配置侦听器。它也应该在listeners
块中。试试这个:
batch.job(id: 'simpleJob') {
batch.step(id: 'myStep') {
batch.tasklet {
batch.chunk(
reader: 'myReader',
processor: 'myProcessor',
writer: 'myWriter',
'commit-interval': 1)
batch.listeners {
batch.listener(ref: 'myReaderListener')
}
}
}
}
关于grails - 如何在Grails项目的Spring Batch作业中配置监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22862493/