0

auto-startupプロパティが に設定されたインバウンド ファイル チャネル アダプターがありますfalse。このアダプターは、私のアプリケーションの出発点です。ファイルのシステムに通知するメッセージを送信しない場合は、他のすべてが不活性であると予想されます。

ただし、コンテキストを開始すると、メッセージがシステムを流れ始めます。なんで?

構成:

<int-file:inbound-channel-adapter auto-startup="false" id="fileWatcher" directory="${input.dir}" channel="incomingFiles">
    <int:poller fixed-rate="1000"></int:poller>
</int-file:inbound-channel-adapter>

<int:channel id="incomingFiles"></int:channel>

主な方法:

public static void main(String[] args) { 
    logger.info("Started application");
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:/spring-config/*.xml");
    context.start();
}

ログ:

[...]
12:06:56.743 [main] INFO  o.s.i.e.SourcePollingChannelAdapter - started fileWatcher
12:06:56.770 [task-scheduler-6] INFO  o.s.i.file.FileReadingMessageSource - Created message: [[Payload=C:\input\From Spreadsheet.txt][Headers={timestamp=1343214416770, id=b8e92486-d469-406e-8787-df78e23b287a}]]
4

1 に答える 1

8

アダプターで auto-startup="false" を設定します (デフォルトでは true です)。

それへの参照を取得して手動で開始し、fileWatcher.start() を呼び出すことができます。統合 MBean エクスポータを含める場合、これは JMX 経由でも利用できます。

または、ペイロードに「@fileWatcher.start()」を含むメッセージを <control-bus /> に送信できます。

おー; すでに持っていることに気づきました。

context.start() を呼び出さないでください。自動起動設定に関係なく、すべての Bean が起動します。

auto-startups コントロール、エラー、AUTO スタートアップ - コンテキストを手動で開始しています。

于 2012-07-25T11:55:29.250 に答える