0

私はSpringIntegrationにまったく慣れていないので、自分の仕事で解決策を見つける必要があります。

私がする必要があるのは:
-dbからのポーリングメカニズムを提供する。
-特定の条件が発生したときにポーリングを有効/無効にできる必要があります
-ポーリングのタイムアウトが必要です(たとえば、ステータスが5分間変化しない場合は何かを行います)
-ポーリングメカニズムにデータを渡す必要があります

基本的に私が必要とするものはすべてです。Springのtask:scheduled-tasksを使用することを考えていましたが、タスクを手動で有効/無効にしたり、タイムアウトを設定したりするためのオプションが表示されません。ポーリングメカニズムに渡す必要のあるデータは、SpringBeanに格納できます。私が正しい方向に進んでいるのか、それとも他のアプローチを試すべきなのか、皆さんにアドバイスしてもらえますか?

4

3 に答える 3

1

これは、春の統合でデータベースをポーリングする方法の簡単な例です

    <int-jdbc:inbound-channel-adapter 
            id="jdbcPoller" channel="jdbc.poll.channel"
            data-source="dataSource" query="select count(*) from test_table">
        <int:poller fixed-rate="500" task-executor="pollTaskExecutor"/>
    </int-jdbc:inbound-channel-adapter>

    <int:channel id="jdbc.poll.channel"/>

条件付きで停止したい場合は、次のようにすることができます

        //stop the polling
    AbstractEndpoint poller = context.getBean("jdbcPoller",AbstractEndpoint.class);
    poller.stop();
于 2013-01-02T02:14:02.877 に答える
0

を使用できますtask:scheduled-tasksが、必要なビットを実装する必要があります。これは、Spring が OOTB に必要なすべての機能を提供していないためです。

  • 無効化ビットは、無効化されているかどうかをチェックするタスクによって実行できるため、何も実行されません。

  • タイムアウトについて、コードは「ステータスが変わらない」と「何かをする」を理解する必要があります。

  • データをポーリング メカニズムに渡す必要があります。ポーリング メカニズムは、必要なデータをロードするか、ソース (キュー、共有オブジェクトなど) から読み取ることができます。

于 2012-12-31T11:54:18.547 に答える
0

Spring Integration を使用すると、<int-jdbc:inbound-channel-adapter/>. Lifecycle methods isRunning()start()、を使用して開始/停止できますstop()

または、にメッセージを送信し<control-bus/>て開始/停止することもできます。

アクティビティがないことを検出する方法はいくつかあります (たとえば、JMX を使用してチャネルのメッセージ数を調べるなど)。

于 2012-12-31T15:21:02.973 に答える