2016-10-11 4 views
1

私は10分ごとにトピックに値(NまたはY)を入れているスケジューラを持っています。トピックがダウンすると、スケジューラーはプロパティ(インタースケジューラー間通信の一種)を投入し、スケジューラーの次のサイクルで使用できるようにします。これは、前回のサイクルで何か悪いことが起こったことをスケジューラーに伝える方法です。このサイクルでトピックに異なる値( 'Y')を配置します。しかし、ここでの問題は、通常の交換財産は助けにはならないということです。このプロパティーは、スケジューラー・サイクルごとに常にヌルです。 「:プロパティTNS」コンテキスト・レベルで設定することができます 私はグローバルな性質に似たものを探して、http://camel.apache.org/schema/blueprint/camel-blueprint.xsdを経てapache camelでグローバルプロパティを使用する方法はありますか

は、私はこの1つを得ました。 これはグローバルプロパティとして使用できますか? 私のスケジューラーのルートでそれを読み書きする方法はありますか?

私はこのインタースケジューラ通信プロパティを保持するインスタンス変数を持つBeanを持つことも考えています。

誰にでも正しいオプションを提案できますか?

答えて

0

あなたが説明したことは、プロセス間の状態を維持する手段が好きで、そのプロパティを使用することは、いくつかの理由で問題になることがあります。

私は、アプリケーションをいくつかの異なる部分に分割し、共有OSGiサービスを使用して状態を維持することをお勧めします。

public interface MyScheduleState() { 
    public setSomeValue(String x) 
    public String getSomeValue() 
} 

ルート1:タイマーがタスクを開始しました。サービスの値を確認してイベントを送信します。エラーが発生した場合、いくつかのキューにエラーメッセージを送信します。//MY.ERRORS

ルート2:MY.ERRORS上のエラーを聞いて、新しい値

でOSGiサービスを更新これは、あなたが行動を制御できますし、あなたは、メモリ内、ディスク上のファイルとして、またはキャッシュのいずれか..「ステートフルなサービスは」そのデータを格納する方法を変更することができます」と、あなたのルートが詳細を知っていることはありません。

0

http://camel.apache.org/properties.html

に見てみましょうこれは正確にあなたが探しているようです - コンテキストのプロパティ。あなたは毎回プロパティの値を設定することができます次のサイクルでも利用できるようになります。

+0

ありがとうございました! – krisp

関連する問題