我正在执行一个spring引导项目,我需要为从某个位置轮询文件添加Spring集成计票器,并在该文件上运行spring批处理来处理它。
为此,我使用了spring批处理集成(请参阅下面的文档)。
http://docs.spring.io/spring-batch/trunk/reference/html/springBatchIntegration.html
在spring引导中,我已经成功地在@配置文件中配置了我的poller,如下所示
@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配置文件中得到了下面的错误。
cvc-complex- to .3.2.2:元素'int:poller'.中不允许出现属性‘固定速率’。
我在谷歌上查了一下,只找到了下面的链接,这并没有多大用处,因为我得到了完全相同的错误。
属性“固定速率”不允许出现在元素'int:poller‘中。
我使用的Spring引导版本如下所示。
<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从批处理集成依赖项中排除出来,并按下面的方式分别添加它,但这也不起作用。
<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中具有固定延迟的属性。有解决这个问题的建议吗?
发布于 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,在项目上启用“春天自然”。
发布于 2016-10-09 02:47:18
有时,这可能是由于缺少pom.xml中的spring-启动-启动-集成和spring-集成文件依赖。因此,当您使用spring集成时,请检查您的项目中是否存在spring- integration -file依赖关系。
https://stackoverflow.com/questions/39924606
复制相似问题