如何在 grails 项目的春季批处理作业中配置侦听器



>我在grails项目中使用Spring batch,并安装了一个grails插件来使其工作:grails-spring-batch

我提出了一个简单的工作,有一个阅读器,一个处理器和一个作家,它工作得很好。

但我想在我的工作步骤(读取器、处理器和写入器)中添加侦听器,以便很好地处理错误。

但是我无法让我的听众使用!我想我可能误用了用来定义豆子的 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')
             }
         }
    }
}

相关内容

  • 没有找到相关文章

最新更新