当前位置: 首页 > 知识库问答 >
问题:

如何用Spring Integration DSL配置StepExecutionListener

寇开畅
2023-03-14

我试图配置一个Spring Batch侦听器,以便为StepExecution事件向Spring Integration Gateway发送消息。

下面的链接解释了如何使用XML配置

有没有更简单的方法使用DSL,避免这种变通?是否有某种方法可以像使用XML配置那样将批处理侦听器直接连接到网关?

干杯,门诺

共有1个答案

欧阳正卿
2023-03-14

首先,SI DSL只是现有SI Java和注释配置的扩展,因此它可以与任何其他Java配置一起使用。当然,XML@import也是正确的。

DSL中没有网关配置,因为它的方法不能与线性IntegrationFlow连接。需要为每种方法提供下游流。

因此,@messaginggateway是一个正确的方法:

@MessagingGateway(name = "notificationExecutionsListener", defaultRequestChannel = "stepExecutionsChannel")
public interface MyStepExecutionListener extends StepExecutionListener {}

另一方面,@MessagingGateway解析以及 标记解析最终得到GatewayProxyFactoryBean定义。因此,如果不想引入新类,只需声明该bean:

@Bean
public GatewayProxyFactoryBean notificationExecutionsListener(MessageChannel stepExecutionsChannel) {
    GatewayProxyFactoryBean gateway = new GatewayProxyFactoryBean(StepExecutionListener.class);
    gateway.setDefaultRequestChannel(stepExecutionsChannel);
    return gateway;
}
@Bean
public IntegrationFlow gatewayFlow() {
        return IntegrationFlows
               .from(MyGateway.class, g -> 
                                         g.method("save", f -> f.transform(...)
                                                                .filter(...))
                                          .method("delete", f -> f.handle(...)))
               .handle(...)
               .get();                            
}

然而,我不确定它是否会简化生命周期,因为任何嵌套的Lambda只会增加更多的噪声,并可能破坏松散耦合原则。

 类似资料:
  • Oracle正在转向通用连接池(UCP),用于维护可以借用、返回或关闭的池连接。我的webapplication在它自己的数据层中就有了这一点。这个应用程序将迁移到使用Hibernate的JPA。此时,我只能将Hibernate配置为使用Oracle JDBC驱动程序。

  • 我现在正在使用rails应用程序。在我的应用程序配置文件中,我添加了以下内容: config/application.rb 为什么未能连接fluentd关于sidekiq和web图像? 将其添加到: 将其添加到:

  • 我有一个UBUNTU/APACHE框,当我尝试使用主机名访问web服务器时,它会将我带到DocumentRoot(即/var/www),并显示那里的所有文件/文件夹(如预期的那样)。 在我的 /var/www我有几个文件夹,如 /var/www/devel和var/www/live,我如何更新我的配置,以便当我通过它的主机名[超文本传输协议://servername]击中服务器时,它会进入默认情况

  • 这段配置通过上下文进行扫描--我用调试器检查了它。问题可能出在哪里?

  • 但是如果我让Spring Boot自动配置JOOQ,那么我应该把这个设置放在哪里呢? 基本的Spring Boot配置似乎只支持在中设置,如jooq-spring-boot-example所示。 我尝试将放入中,但这对SQL没有任何影响。 有没有办法自定义Spring boot JOOQ配置,而不必自己配置JOOQ? 我使用的是SpringBoot 2.1.7.Release和JOOQ 3.11.

  • 问题内容: 我尝试执行此docker命令以使用Elasticsearch设置Jaeger Agent和Jaeger Collector。 但是此命令给出以下错误。如何用ElasticSearch配置Jaeger? 问题答案: 搜索解决方案一段时间后,我发现了一个docker-compose.yml文件,该文件具有Jaeger Query,Agent,collector和Elasticsearch配