179.4. JMX を使用した Camel のモニタリング

179.4.1. JConsole を使用して Camel をモニターする

Camel と同じホストで JConsole を実行している場合は、ローカル接続のリストに CamelContext が表示されます。

リモートの Camel インスタンスに接続するには、またはローカルプロセスが表示されない場合は、リモートプロセスオプションを使用して URL を入力します。以下は localhost URL:service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi/camel の例です。

JConsole で Apache Camel を使用する:

image

179.4.2. 登録されているエンドポイント

Camel 2.1 以降では、数千または数百万のエンドポイントが使用される場合、非シングルトンのオーバーヘッドがかなり大きくなるため、singletonエンドポイント のみ が登録されます。これは、受信者リスト EIP を使用する場合、または大量のメッセージを送信する ProducerTemplate から発生する可能性があります。

179.4.3. 登録されているプロセッサー

この FAQ を参照してください。

179.4.4. JMX NotificationListener を使用して camel イベントをリッスンする方法は?

Camel の通知イベントは、何が起こっているかを大まかに示します。コンテキストとエンドポイントからライフサイクルイベントを確認でき、エンドポイントで送受信されるエクスチェンジを確認できます。

Camel 2.4 から、カスタム JMX NotificationListener を使用して camel イベントをリッスンできます。

CamelContext を開始する前に、まず JmxNotificationEventNotifier を設定する必要があります。

// Set up the JmxNotificationEventNotifier
notifier = new JmxNotificationEventNotifier();
notifier.setSource("MyCamel");
notifier.setIgnoreCamelContextEvents(true);
notifier.setIgnoreRouteEvents(true);
notifier.setIgnoreServiceEvents(true);

CamelContext context = new DefaultCamelContext(createRegistry());
context.getManagementStrategy().addEventNotifier(notifier);

次に、イベントをリッスンするためのリスナーを登録できます。

// register the NotificationListener
ObjectName on = ObjectName.getInstance("org.apache.camel:context=camel-1,type=eventnotifiers,name=JmxEventNotifier");
MyNotificationListener listener = new MyNotificationListener();
context.getManagementStrategy().getManagementAgent().getMBeanServer().addNotificationListener(on,
    listener,
    new NotificationFilter() {
        private static final long serialVersionUID = 1L;

        public boolean isNotificationEnabled(Notification notification) {
            return notification.getSource().equals("MyCamel");
        }
    }, null);

179.4.5. Tracer MBean を使用して粒度の細かいトレースを取得する

Camel 2.9.0 上のあらい粒度の通知に加えて、細かい粒度のトレースイベントの JMX 通知がサポートされます。

これらは Tracer MBean にあります。詳細なトレースを有効にするには、まずコンテキストまたはルートでトレースを有効にする必要があります。

これは、コンテキストの設定時、またはコンテキスト/ルート MBean で実行できます。

2 番目のステップとして、トレーサーで jmxTraceNotifications 属性を true に設定する必要があります。これは、コンテキストを設定するとき、または実行時にトレーサー MBean で実行できます。

これで、JConsole を使用してトレーサー MBean で TraceEvent 通知を登録できるようになりました。すべてのエクスチェンジとメッセージの詳細を含む、ルートのすべてのステップに対して 1 つの通知があります。

image