カスタムキャメルコンポーネントを開発しています。コンシューマー サポートのみを備えているため、エンドポイントからのみ呼び出すことができます。カスタム コンポーネントが「mycomp」スキームに登録されているとします。
要件 1:以下のルートをサポートする必要があるユースケースがあります。
from("mycomp:Something").to("file:data/outbox");
エンドポイントに createConsumer() の実装を提供したため、上記のルートは機能しています
Req 2:ここで、特定の時間にルートの上を開始するという別の要件があります。(毎日 08:00 AM と仮定)
Req2 では、camel-quartz コンポーネントを使用することにしました。私たちが知っているように、Quartzはエンドポイントからのみサポートし、私のreq2のエンドポイントからは..
from("quartz://myTimer?cron=0+0+8+*+*+*")
さて、問題:
カスタム コンポーネントには from() エンドポイントが必要で、特定の時間にトリガーする必要もあります。ただし、クォーツは from() エンドポイントのみでも機能します。Camel では、.. from("xxx").from("yyy") .. のような 2 つの from を持つルートを持つことはできません。
回避策の 1 つ:
「mycomp」に定義された開始ルートと最終ルートが次のようなプロセッサを開発できます..
from("quartz://myTimer?cron=0+0+8+*+*+*").process(ProcessorWhich_StartsMyRoute ) ;
from("mycomp:何か")。noAutoStartup ()。routeId (" MyRoute ").to("file:data/outbox");
しかし、再び、クォーツスケジューリングを使用して特定の時間にMyRouteを停止するプロセッサを考え出す必要があります..それは次のようなものになります..
from("quartz://myTimerStop?cron=0+30+8+*+*+*").process(ProcessorWhich_ StopsMyRoute );
上記では、午前 8 時 30 分に停止しています。しかし、これはこのソリューションの制限であり、実際にはいつ MyRoute を安全に停止できるかわかりません。
Req1 と Req2 の両方を達成する方法について、アイデアや情報を共有してください。私のユースケースについてさらに詳細が必要な場合はお尋ねください。