第85章 JMX


JMX コンポーネント

JMX コンポーネントを使用すると、コンシューマーは MBean の通知をサブスクライブできます。コンポーネントは、エクスチェンジを介して Notification オブジェクトを直接渡すか、このプロジェクトで提供されるスキーマに従って XML にシリアライズすることをサポートします。これはコンシューマーのみのコンポーネントです。プロデューサーの作成を試みると、例外が発生します。

Camel on EAP デプロイメント

このコンポーネントは、Red Hat JBoss Enterprise Application Platform (JBoss EAP) コンテナー上で簡素化されたデプロイメントモデルを提供する Camel on EAP (Wildfly Camel) フレームワークによってサポートされます。このモデルの詳細は、Deploying into a Web Server の Apache Camel on JBoss EAP の章を参照してください
JBoss EAP コンテナーのコンテキストでは、JMX コンポーネントは以下のように JBoss EAP JMX サブシステムと統合します。
CamelContext camelctx = contextFactory.createWildflyCamelContext(getClass().getClassLoader());
camelctx.addRoutes(new RouteBuilder() {
    @Override
    public void configure() throws Exception {
        String host = InetAddress.getLocalHost().getHostName();
        from("jmx:platform?format=raw&objectDomain=org.apache.camel&key.context=" + host + "/system-context-1&key.type=routes&key.name=\"route1\"" +
        "&monitorType=counter&observedAttribute=ExchangesTotal&granularityPeriod=500").
        to("direct:end");
    }
});
camelctx.start();

ConsumerTemplate consumer = camelctx.createConsumerTemplate();
MonitorNotification notifcation = consumer.receiveBody("direct:end", MonitorNotification.class);
Assert.assertEquals("ExchangesTotal", notifcation.getObservedAttribute());
Copy to Clipboard Toggle word wrap

URI 形式

コンポーネントは、以下の URI を使用してローカルプラットフォームの MBean サーバーに接続できます。
jmx://platform?options
Copy to Clipboard Toggle word wrap
リモート MBean サーバーの URL は、jmx: スキーム接頭辞の後に以下のように指定できます。
jmx:service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi?options
Copy to Clipboard Toggle word wrap
URI にクエリーオプションを追加するには、?option=value&option=value&.. の形式を使用します。

URI オプション

Expand
プロパティー 必須 デフォルト 説明
format xml メッセージのボディーの形式。xml または raw のいずれか。xml の場合、通知は XML にシリアライズされます。raw の場合、raw java オブジェクトはボディーとして設定されます。
password リモート接続を確立するための認証情報。
objectDomain はい 接続している MBean のドメイン。
objectName 接続している MBean の name キー。キーのリストのこのプロパティーのいずれかを指定する必要があります(ただし両方ではありません)。詳細は、「ObjectName コンストラクト」 を参照してください。
notificationFilter NotificationFilter インターフェイスを実装する Bean への参照。#beanID 構文は、レジストリー内の Bean を参照するために使用されます。
handback 通知の受信時にリスナーに渡す値。この値は jmx.handback メッセージヘッダーに配置されます。
testConnectionOnStartup true *Camel 2.11* true の場合、起動時に JMX 接続を確立できない場合にコンシューマーは例外を出力します。false の場合、コンシューマーは接続が確立されるまで x 秒ごとに JMX 接続を確立しようとします。ここで、x は設定された reconnectDelay です。
reconnectOnConnectionFailure false *Camel 2.11* true の場合、接続障害が発生したときにコンシューマーは JMX サーバーへの再接続を試みます。コンシューマーは接続が確立されるまで x 秒ごとに JMX 接続を再確立しようとします。x は設定された reconnectDelay に置き換えます。
reconnectDelay 10 *Camel 2.11* 初期接続の作成を再試行する前、または失われた接続を再接続するまで待機する秒数。

ObjectName コンストラクト

URI には常に objectDomain プロパティーが必要です。さらに、URI には objectName または key で始まる 1 つ以上のプロパティーが含まれている必要があります。

Name プロパティーの Domain

objectName プロパティーが指定されると、以下のコンストラクターを使用して MBean の ObjectName インスタンスを構築します。
ObjectName(String domain, String key, String value)
Copy to Clipboard Toggle word wrap
前述のコンストラクターの key の値は name で、値は objectName プロパティーの値になります。

Hashtable のあるドメイン

ObjectName(String domain, Hashtable<String,String> table)
Copy to Clipboard Toggle word wrap
Hashtable は、key で始まるプロパティーを抽出することで構築されます。プロパティーには、Hashtable をビルドする前に、key 接頭辞が取り除かれます。これにより、URI に変数番号が含まれるプロパティーが含まれ、MBean を識別できるようになります。

from("jmx:platform?objectDomain=jmxExample&key.name=simpleBean").
        to("log:jmxEvent");
Copy to Clipboard Toggle word wrap

完全な例

JMX コンポーネントを使用した完全な例は、examples/camel-example-jmx ディレクトリーにあります。

Monitor Type Consumer

Camel 2.8 では、JMX の一般的な ユースケースが、デプロイされた Bean の属性を監視するモニター Bean を作成することです。これには、JMX モニターを作成してデプロイするためにいくつかの Java コードを記述する必要があります。以下に例を示します。
 CounterMonitor monitor = new CounterMonitor();
 monitor.addObservedObject(makeObjectName("simpleBean"));
 monitor.setObservedAttribute("MonitorNumber");
 monitor.setNotify(true);
 monitor.setInitThreshold(1);
 monitor.setGranularityPeriod(500);
 registerBean(monitor, makeObjectName("counter"));
 monitor.start();
Copy to Clipboard Toggle word wrap
2.8 バージョンには、指定された objectName および属性のモニター Bean を自動的に作成し、登録する新しいタイプのコンシューマーが導入されました。追加のエンドポイント属性を使用すると、ユーザーは監視する属性、作成するモニターのタイプ、およびその他の必要なプロパティーを指定できます。上記のコードスニペットは、エンドポイントプロパティーのセットに分散されます。コンシューマーはこれらのプロパティーを使用して CounterMonitor を作成し、登録してから変更にサブスクライブします。すべての JMX モニタータイプがサポートされます。

from("jmx:platform?objectDomain=myDomain&objectName=simpleBean&" + 
     "monitorType=counter&observedAttribute=MonitorNumber&initThreshold=1&" +
     "granularityPeriod=500").to("mock:sink");
Copy to Clipboard Toggle word wrap
上記の例では、新しい Monitor Bean が作成され、MonitorNumber 属性を監視するローカルの mbean サーバーに置かれます。simpleBeanモニター Bean とオプションの追加タイプを以下に示します。新たにデプロイされたモニター Bean は、コンシューマーが停止すると自動的にアンデプロイされます。

モニタータイプの URI オプション

Expand
プロパティー type 適用先 description
monitorType enum all カウンターの 1 つ(guage、string)
observedAttribute string all 観察される属性
granularityPeriod long all 監視される属性の粒度(ミリ秒単位)。JMX によると、デフォルトは 10 秒です。
initThreshold number counter 初期しきい値
offset number counter オフセット値
modulus number counter modulus 値
differenceMode boolean counter、gage 違いを報告する必要がある場合は true、実際の値の場合は false
notifyHigh boolean ゲージ 高通知のオン/オフスイッチ
notifyLow boolean ゲージ 通知の低/オフスイッチ
highThreshold number ゲージ レポートが高い通知のしきい値
lowThreshold number ゲージ 低い notificaton レポートのしきい値
notifyDiffer boolean string 文字列が異なる場合に通知を発生させる場合は true
notifyMatch boolean string true: 文字列が一致するときに通知を実行する
stringToCompare string string 属性値と比較する文字列
モニタースタイルのコンシューマーは、ローカルの mbean サーバーでのみサポートされます。現在、JMX は、プロキシーのデプロイメントを容易にするために、リモートでデプロイされたクラスや、クライアントとサーバーの両方にアダプターライブラリーを持たずに mbeans のリモートデプロイメントをサポートしていません。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat