如何在grails项目中的spring批处理作业中配置监听器?

时间:2014-04-04 12:13:05

标签: grails groovy spring-batch

我在grails项目中使用spring批处理,并且我安装了一个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 方法,这正是我尝试做的。< / p>

但如果需要将监听器逻辑放在另一个bean中,我的问题仍然存在。

1 个答案:

答案 0 :(得分:1)

如评论中所述,应在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')
             }
         }
    }
}