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

Spring integration poller XML配置与Spring Boot

祝英博
2023-03-14

我正在spring boot中处理一个项目,我需要添加spring integration poller来从某个位置轮询文件,并在该文件上运行spring batch来处理它。

我为此使用了spring批处理集成(文档参考如下)

在spring boot中,我在@configuration文件中成功地配置了我的轮询器,如下所示

@Bean
@InboundChannelAdapter(value = "fileInputChannel", poller = @Poller(
  fixedRate = "1000"), autoStartup = "true")
public MessageSource<File> filesScanner() {
  CompositeFileListFilter<File> filters = new   CompositeFileListFilter<File>();
  filters.addFilter(new   SimplePatternFileListFilter("*.xml"));
  filters.addFilter(new AcceptOnceFileListFilter<File>());
  filters.addFilter(getLastModifiedFileFilter());
  FileReadingMessageSource source = new FileReadingMessageSource();
  source.setDirectory(new File("F:/DataInput/"));
  source.setFilter(filters);
  return source;
}

这个轮询器是在java配置中定义的,而通道是在xml中定义的,如下所示。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:int="http://www.springframework.org/schema/integration"
  xmlns:int-file="http://www.springframework.org/schema/integration/file"
  xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/integration
    http://www.springframework.org/schema/integration/spring-integration.xsd
    http://www.springframework.org/schema/integration/file
    http://www.springframework.org/schema/integration/file/spring-integration-file.xsd">
    <int:channel id="ticketingResponse" />
    <int:channel id="mailFailureTicketData" />
    <int:channel id="moveSuccessTicketingFile" />
    <int:channel id="moveFailureTicketingFile" />
    <int:channel id="ticketingFileInput" />
    <int:channel id="ticketingJobParameters" />
    <!-- <int-file:inbound-channel-adapter id="filePoller"
    channel="inboundFileChannel"
    directory="file:/tmp/myfiles/"
    filename-pattern="*.csv">
  <int:poller fixed-rate="1000"/>
</int-file:inbound-channel-adapter> -->
    <bean id="earliestTicketingFileSelecter" class="com.avios.integration.iqcx.FilesSortingComparator" />
    <bean id="compositeFilesFilter"
        class="org.springframework.integration.file.filters.CompositeFileListFilter">
        <constructor-arg>
            <list>
                <bean
                    class="org.springframework.integration.file.filters.RegexPatternFileListFilter">
                    <constructor-arg name="pattern" value="${ticketing.input.file.pattern}" />
                </bean>
                <bean class="org.springframework.integration.file.filters." />
                <bean
                    class="org.springframework.integration.file.filters.LastModifiedFileListFilter">
                    <property name="age" value="${ticketing.input.file.age}" />
                </bean>
            </list>
        </constructor-arg>
    </bean>
    <bean id="ticketingFilesScanner"
    class="org.springframework.integration.file.FileReadingMessageSource">
    <property name="filter" value="compositeFilesFilter" />
    <property name="directory" value="/tmp/myfiles/" />
</bean>
<int-file:inbound-channel-adapter id="filePoller"
    channel="inboundFileChannel"
    directory="file:/tmp/myfiles/"
    filename-pattern="*.csv">
  <int:poller fixed-rate="1000"/>
</int-file:inbound-channel-adapter><!-- <int-file:inbound-channel-adapter
        directory="${ticketing.input.file.path}" channel="ticketingFileInput"
        comparator="earliestTicketingFileSelecter" auto-startup="true" filter="compositeFilesFilter" >
        <int:poller ></int:poller>
        </int-file:inbound-channel-adapter> -->
    <int:transformer id="iqcxFilesToJobParameters" ref="jobParameterTransformer"
        input-channel="ticketingFileInput" method="addTicketingFileToJobParameter"
        output-channel="ticketingJobParameters"  />
    <int:outbound-channel-adapter channel="ticketingJobParameters"
        ref="iqcxJobLaunchingGateway" method="handleMessage" />

</beans>

我的XML配置文件中出现以下错误。

我在谷歌上查了一下,发现只有下面的链接,没有太大的用处,因为我得到了完全相同的错误。

使用Spring Boot&Spring与数据库支持配置的集成

属性“fixed-rate”不允许出现在元素“int:poller”中

我正在使用的Spring Boot版本如下所示。

    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.6.RELEASE</version>

库中的Spring集成jar-spring-integration-core-4.2.8.release.jar

我还尝试从批集成依赖项中排除集成jar,并单独添加它,如下所示,但这也不起作用。

    <dependency>
        <groupId>org.springframework.batch</groupId>
        <artifactId>spring-batch-integration</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.integration</groupId>
                <artifactId>spring-integration-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework.integration/spring-integration-core -->
    <dependency>
        <groupId>org.springframework.integration</groupId>
        <artifactId>spring-integration-core</artifactId>
        </dependency>

共有1个答案

李谦
2023-03-14

阅读联机架构中的重要注释:

+++++重要+++++

This schema is for the 1.0 version of Spring Integration Core. We cannot update it to the current schema
 because that will break any applications using 1.0.3 or lower. For subsequent versions, the unversioned
 schema is resolved from the classpath and obtained from the jar.
 Please refer to github:

https://github.com/spring-projects/spring-integration/tree/master/spring-integration-core/src/main/resources/org/springframework/integration/config/xml

for the latest schema. 

在旧的模式中,fixed-rate是轮询器上周期性触发器子元素的一部分。

这里是4.2模式。

如果这只是一个IDE错误,您可以忽略它,或者将您的IDE配置为“Spring感知”。

Spring在类路径上找到实际的模式。

使用STS,在项目上启用“Spring Nature”。

 类似资料:
  • 有两个命令使用得最多了,从第一次调用 Git 到每天的日常微调及参考,这个两个命令就是: config 和 help 命令。 git config Git 做的很多工作都有一个默认方式。 对于绝大多数工作而言,你可以改变 Git 的默认方式,或者根据你的偏好来设置。 这些设置涵盖了所有的事,从告诉 Git 你的名字,到指定偏好的终端颜色,以及你使用的编辑器。 此命令会从几个特定的配置文件中读取和写

  • 我有一个对我的Rest Webservice的AJAX请求,带有一个自定义头“login”。 用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64;RV:58.0)Gecko/20100101 Firefox/58.0 接受:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 接受语言:fr,f

  • 应用的源码是通过jenkins 从git 服务器上拉取到jenkins服务器上进行编译,所以我们需要让jenkins服务有对git服务的访问权限。 以下是介绍如何让jenkins有对gitlab和github的访问权限配置。 gitlab配置 登陆jenkins服务器 进入 cd ~/.ssh/ 找到 cat id_rsa.pub 如果没有请执行以下命令生成: $ ssh-keygen -o -t

  • 在新版本里,lua已可嵌入到remap.config里,支持更灵活的基于http header编程 ts-lua 接口文档https://github.com/portl4t/ts-lua 配置说明 Remap 可支持配置Lua Hook点的五个阶段 do_remap remap前阶段,该阶段可以修改存储key,拒绝服务等等操作 send_request 回源发送request 阶段,该阶

  • 问题内容: 在最近我从事的一些大型项目中,选择其中一种(XML或注释)似乎变得越来越重要。随着项目的发展,一致性对于可维护性非常重要。 我的问题是:与基于注释的配置相比,基于XML的配置有哪些优势?与基于XML的配置相比,基于注释的配置有哪些优势? 问题答案: 注释有其用途,但它们不是杀死XML配置的灵丹妙药。我建议将两者混合! 例如,如果使用Spring,则将XML用于应用程序的依赖注入部分是完

  • 主要内容:从二进制tar文件安装Apache Cassandra和Datastax企业级被不同组织用于存储大量数据。在安装Apache Cassandra之前,您必须具备以下事项: 必须拥有datastax社区版本,可以点击这里下载Cassandra3.10。 必须提前安装好JDK8以上版本。 必须提前安装好JDK。 最新版本的Java 8,要验证是否安装了正确版本的Java,请在终端上输入: 对于使用, 需要安装(一定要使用这

  • 主要内容:1.Java 环境设置 ,2.下载 Maven,3.配置 Maven 环境变量Maven是一个基于 Java 的项目管理工具,因此最基本的要求是在计算机上安装 JDK。 Maven 对系统要求如下表: JDK JDK 7.0 及以上。 内存 没有最低要求。 磁盘空间 Maven 安装本身大约需要 10MB。除此之外,其他磁盘空间将用于本地 Maven 存储库。本地存储库的大小将根据使用情况而有所不同,但至少应为 500MB。 操作系统 没有最低要求。 1.Java 环境设置

  • 先了解一下配置项,关于 Scope 的,在后续的章节慢慢补充。define 的第三个参数就是模型的配置项,它的类型是DefineOptions接口,接口如下。 defaultScope?: FindOptions; scopes?: DefineScopeOptions; // scopes 在后续的会有一个大的章节来说 omitNull?: boolean; // 所有的字段都不能为空 time