0
ソースディレクトリからファイルを読み込み、順番に(1つずつ)処理する必要があります。私は、インバウンド・アダプタファイル、設定上のあたりのようSpring統合ファイルインバウンドアダプタを使用してファイルを順番に処理する方法
<?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:file="http://www.springframework.org/schema/integration/file"
xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
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
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<int:channel id="controlChannel" />
<int:channel id="adapterInputChanel">
<int:queue />
</int:channel>
<int:control-bus input-channel="controlChannel" />
<file:inbound-channel-adapter id="inboundAdapter"
directory="inputdir"
channel="adapterInputChanel" auto-startup="false" prevent-duplicates="true"
ignore-hidden="true">
<int:poller id="poller" fixed-delay="5000"
max-messages-per-poll="1">
</int:poller>
</file:inbound-channel-adapter>
<int:service-activator input-channel="adapterInputChanel"
ref="mainService" method="readFiles" output-channel="filesOut">
<int:poller fixed-delay="500" />
</int:service-activator>
<bean id="mainService" class="com.sample.MainService">
</bean>
<file:outbound-channel-adapter id="filesOut"
directory="output dir" />
</beans>
、アプリケーションコンテキストのコンフィギュレーションの下に持って
は、ポーリングごとに一つのファイルを取得し、サービス実行を実行します。
しかし、システムが別のファイルを取得している場合、最初のトランザクションが終了するまでファイルインバウンドアダプタはサービスを再開しません。
いくつかのサンプルでこの問題を処理する方法を教えてください。
ありがとうございました。出来た。私は以下のようなポーリングプロセスを開始/停止するために制御バスを使用しています。 controlChannel = ac.getBean( "controlChannel"、MessageChannel.class);サブタイプ: controlChannel.send(新しいGenericMessage( "@ inboundAdapter.start()")); しかし、問題は、私はアダプタを停止すると、それぞれのサービスがすぐに終了しています。この場合、ファイルインバウンドアダプタはそれ以降のポーリングを停止するだけです。これについて私に助言してください。 –
dave
アダプタを停止しても、割り込みが発生しない限り、現在のスレッドには影響しません。そうであれば、[smart poller](http://docs.spring.io/spring-integration/reference/html/messaging-channels-section.html#__smart_polling)を使用して停止を延期することができます - コントロールバスを使用しますポーリングが 'null 'を返すとき(またはあなたの要求に応じて次のポーリングの前に)アダプターを停止するようにポーラーにメッセージを送信することができます。 –