Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第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 サブシステムと統合します。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下の URI を使用してローカルプラットフォームの MBean サーバーに接続できます。
jmx://platform?options
jmx://platform?options
リモート MBean サーバーの URL は、
jmx:
スキーム接頭辞の後に以下のように指定できます。
jmx:service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi?options
jmx:service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi?options
URI にクエリーオプションを追加するには、
?option=value&option=value&.. の形式を使用します。
URI オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
プロパティー | 必須 | デフォルト | 説明 |
---|---|---|---|
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)
ObjectName(String domain, String key, String value)
前述のコンストラクターの
key
の値は name
で、値は objectName
プロパティーの値になります。
Hashtable のあるドメイン リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ObjectName(String domain, Hashtable<String,String> table)
ObjectName(String domain, Hashtable<String,String> table)
Hashtable
は、key
で始まるプロパティーを抽出することで構築されます。プロパティーには、Hashtable
をビルドする前に、key
接頭辞が取り除かれます。これにより、URI に変数番号が含まれるプロパティーが含まれ、MBean を識別できるようになります。
例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("jmx:platform?objectDomain=jmxExample&key.name=simpleBean"). to("log:jmxEvent");
from("jmx:platform?objectDomain=jmxExample&key.name=simpleBean").
to("log:jmxEvent");
完全な例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
JMX コンポーネントを使用した完全な例は、
examples/camel-example-jmx
ディレクトリーにあります。
Monitor Type Consumer リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.8 では、JMX の一般的な ユースケースが、デプロイされた Bean の属性を監視するモニター Bean を作成することです。これには、JMX モニターを作成してデプロイするためにいくつかの Java コードを記述する必要があります。以下に例を示します。
2.8 バージョンには、指定された objectName および属性のモニター Bean を自動的に作成し、登録する新しいタイプのコンシューマーが導入されました。追加のエンドポイント属性を使用すると、ユーザーは監視する属性、作成するモニターのタイプ、およびその他の必要なプロパティーを指定できます。上記のコードスニペットは、エンドポイントプロパティーのセットに分散されます。コンシューマーはこれらのプロパティーを使用して CounterMonitor を作成し、登録してから変更にサブスクライブします。すべての JMX モニタータイプがサポートされます。
例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("jmx:platform?objectDomain=myDomain&objectName=simpleBean&" + "monitorType=counter&observedAttribute=MonitorNumber&initThreshold=1&" + "granularityPeriod=500").to("mock:sink");
from("jmx:platform?objectDomain=myDomain&objectName=simpleBean&" +
"monitorType=counter&observedAttribute=MonitorNumber&initThreshold=1&" +
"granularityPeriod=500").to("mock:sink");
上記の例では、新しい Monitor Bean が作成され、
MonitorNumber
属性を監視するローカルの mbean サーバーに置かれます。simpleBean
モニター Bean とオプションの追加タイプを以下に示します。新たにデプロイされたモニター Bean は、コンシューマーが停止すると自動的にアンデプロイされます。
モニタータイプの URI オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
プロパティー | 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 のリモートデプロイメントをサポートしていません。