grails - 如何在Grails项目的Spring Batch作业中配置监听器?

标签 grails groovy spring-batch

我在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/

相关文章:

java - Groovy HTTP 生成器 : Empty POST response causes SAXParseException

java.lang.IllegalStateException : Input resource must exist (reader is in 'strict' mode): class path resource

java - 我在 Spring Boot 版本 2.2.0 的 Spring Batch 中遇到错误

spring - 如何使用 Spring Integration DSL 配置 StepExecutionListener

javascript - Textarea没有显示结果

java - Groovy 的 MarkupBuilder 在生成 "id"XML 标记时出现异常

grails - Grails如何使用注释来过滤 Controller Action

grails 数据绑定(bind)集合

grails - 我可以将参数从 Controller 传递到服务类吗

gradle - 如何在Gradle中使用类似于ant的文件集和pathconvert的东西