我有一个包含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"/>
答案 0 :(得分:0)
从高处开始,只需将分割器output-channel
作为ExecutorChannel
即可以并行方式处理某些消息。
但是!它并不能保证您的目标服务(队列?)不会受到单线程性能的瓶颈。
从另一方面来看,请注意自Spring Integration 4.2以来的FileSplitter
。它允许不将整个文件读取到内存中,而是依靠InputStream
的{{1}}。