私はCamelを初めて使用し、特定のシナリオでラクダを使用する方法を理解するのに苦労しています。このシナリオでは、時々アクションを生成する(Javaベースの)エージェントがあります。これらのイベントの通知を受け取るには、イベント駆動型のコンシューマーが必要です。これらのイベントは、「ファイル」プロデューサーにルーティングされます(当面の間)。
ラクダの本では、例は世論調査の消費者のためのものです。イベント駆動型の消費者向けの一般的なソリューションは見つかりませんでした。私はJMXの同様の実装に出くわしました:
public class JMXConsumer extends DefaultConsumer implements NotificationListener {
JMXEndpoint jmxEndpoint;
public JMXConsumer(JMXEndpoint endpoint, Processor processor) {
super(endpoint, processor);
this.jmxEndpoint = endpoint;
}
public void handleNotification(Notification notification, Object handback) {
try {
getProcessor().process(jmxEndpoint.createExchange(notification));
} catch (Throwable e) {
handleException(e);
}
}
}
ここでは、JMX通知が到着するたびにhandleNotificationが呼び出されます。
エージェントがアクションを生成するたびに消費者に通知を受け取るために、同様のことをしなければならないと思います。ただし、上記のhandleNotificationメソッドはJMXに固有のものです。Webページには次のように書かれています。「独自のイベント駆動型コンシューマーを実装する場合は、カスタムコンシューマーに実装する類似のイベントリスナーメソッドを特定する必要があります。」
知りたいのは、類似のイベントリスナーを特定して、エージェントがアクションを実行するたびにコンシューマーに通知されるようにする方法です。
ウェブページへのアドバイス/リンクは大歓迎です。