读取FTP文件 - 性能改进Spring Integration

时间:2015-09-23 17:07:47

标签: spring-integration

我有一个包含100,000条记录的FTP文件,我需要将每条记录转换为XML并将其发送到Queue。遵循以下策略:

FTP->拆分器(保留列表中的所有行) - > Transformer-> Queue

请建议我们是否可以做得更好。如何读取具有多个并行线程的Splitter列表,而不是按顺序?

(在IBM Integration Bus(IIB)中,我们有一个名为' Instances'的概念,有什么类似的吗?)

我使用下面的代码,但似乎没有运作良好。请提出其他更好的建议吗?

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
      <property name="corePoolSize" value="1"/>
      <property name="maxPoolSize" value="15"/>
      <property name="waitForTasksToCompleteOnShutdown" value="true"/>  
</bean>

是否可以保持多个“打开输出计数”。 ?如果多个线程在队列中发布消息,它应该默认打开多个打开输出计数?

<int-jms:outbound-channel-adapter   id="jmsOut"
                                    channel="outputJMS"
                                    connection-factory="jmsQueueConnectionFactoryCached"
                                    destination="destinationQueue"/>

1 个答案:

答案 0 :(得分:0)

从高处开始,只需将分割器output-channel作为ExecutorChannel即可以并行方式处理某些消息。

但是!它并不能保证您的目标服务(队列?)不会受到单线程性能的瓶颈。

从另一方面来看,请注意自Spring Integration 4.2以来的FileSplitter。它允许不将整个文件读取到内存中,而是依靠InputStream的{​​{1}}。