システムで発生するイベントが公開されるActiveMQがあります。このプロジェクトでは、ユーザーが監視リストにエンティティを追加します。これらのエンティティでイベントが発生するたびに、関心のある参加者にメールを送信したいと思います。
ユースケースは、大まかに言って、カタログの製品情報ページに関心を示し、その製品で何らかのアクティビティが発生するたびに電子メールが送信されることを意味します(価格が下がる、肯定的なレビューがあるなど)。私はこの相互作用をラクダのルートとしてモデル化しました。
したがって、たとえば、この製品の評価が5に等しいときはいつでも、ユーザーが私に電子メールを送信すると言うと、次のルートがラクダのコンテキストに追加されます。
from("activemq:topic:events.product.save").filter().xpath("/object[<object id>]/rating").isEqualTo("5").to("email:<user's email>")
同様に、製品に新しいコメントがあるたびにユーザーに通知したい場合は、別のルートが作成されます。これにより、各ユーザーが関心のある時計を追加し始めると、何千ものルートが作成される可能性があります。
私が持っているいくつかの質問は次のとおりです。
これは動的ルートを作成するための許容可能な方法ですか?私が検討しているオプションの1つは、受信者リストを使用することです。しかし、受信者リストを返すBeanにメッセージをルーティングすることをエレガントにするソリューションを思い付くことができませんでした。たとえば、上記で説明したケースの場合、Beanには、返される受信者リストを確認するためのif-elseがたくさんありますか?
camelcontextには、xmlファイルからルートをロードするメソッドがありますが、既存のルートを永続化するメソッドはありません。これらの動的に作成されたルートを永続化するための最も簡単な(そして効率的な)方法は何でしょうか?camel-usersリストのこのスレッドは、私の要求を要約したものです。