首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring集成轮询器XML配置与spring启动

Spring集成轮询器XML配置与spring启动
EN

Stack Overflow用户
提问于 2016-10-07 19:34:07
回答 2查看 4.2K关注 0票数 0

我正在执行一个spring引导项目,我需要为从某个位置轮询文件添加Spring集成计票器,并在该文件上运行spring批处理来处理它。

为此,我使用了spring批处理集成(请参阅下面的文档)。

http://docs.spring.io/spring-batch/trunk/reference/html/springBatchIntegration.html

在spring引导中,我已经成功地在@配置文件中配置了我的poller,如下所示

代码语言:javascript
复制
@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定义的,如下所示。

代码语言:javascript
复制
<?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配置文件中得到了下面的错误。

cvc-complex- to .3.2.2:元素'int:poller'.中不允许出现属性‘固定速率’。

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

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

属性“固定速率”不允许出现在元素'int:poller‘中。

我使用的Spring引导版本如下所示。

代码语言:javascript
复制
    <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

我还尝试将integration从批处理集成依赖项中排除出来,并按下面的方式分别添加它,但这也不起作用。

代码语言:javascript
复制
    <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>

还检查了XSD http://www.springframework.org/schema/integration/spring-integration.xsd,它在poller中具有固定延迟的属性。有解决这个问题的建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-07 20:44:32

阅读在线模式中的重要说明:

+++++重要+++++ 此模式适用于的1.0版本。我们不能将其更新到当前模式,因为这将破坏任何使用1.0.3或更低版本的应用程序。对于后续版本,不版本模式从类路径中解析,并从jar中获得。请参阅github: https://github.com/spring-projects/spring-integration/tree/master/spring-integration-core/src/main/resources/org/springframework/integration/config/xml 用于最新架构。

在旧模式中,固定速率是轮询器上周期性触发器子元素的一部分。

4.2模式是这里

如果这只是IDE错误,您可以忽略它,或者将IDE配置为"spring感知“。

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

使用STS,在项目上启用“春天自然”。

票数 0
EN

Stack Overflow用户

发布于 2016-10-09 02:47:18

有时,这可能是由于缺少pom.xml中的spring-启动-启动-集成和spring-集成文件依赖。因此,当您使用spring集成时,请检查您的项目中是否存在spring- integration -file依赖关系。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39924606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档