6.6. メッセージカウンターの使用
メッセージカウンターを使用して、キューの情報を経時的に取得します。これは、特に確認が困難な傾向を特定するのに役立ちます。
たとえば、メッセージカウンターを使用して、特定のキューが時間とともにどのように使用されるかを決定できます。また、管理 API を使用してキュー内のメッセージ数に対して一定間隔でクエリーを試行することもできますが、キューがどのように使用されているかを示すことはできません。キュー内のメッセージ数は、クライアントが送信または受信されないか、キューに送信されたメッセージの数が消費されるメッセージの数と等しくないため、定数を維持できます。どちらの場合も、キュー内のメッセージ数は、非常に異なる方法で使用される場合でも同じになります。
6.6.1. メッセージカウンターのタイプ
メッセージカウンターは、ブローカーのキューに関する追加情報を提供します。
count
- ブローカーが起動してからキューに追加されたメッセージの合計数。
countDelta
- 最後のメッセージカウンターの更新以降にキューに追加されたメッセージの数。
lastAckTimestamp
- キューからのメッセージが最後に確認された時刻のタイムスタンプ。
lastAddTimestamp
- メッセージが最後にキューに追加されたタイムスタンプ。
messageCount
- キューの現在のメッセージ数。
messageCountDelta
-
最後のメッセージカウンターの更新以降にキューから追加/削除されたメッセージの合計数。たとえば、
messageCountDelta
が-10
の場合、全部で 10 個のメッセージがキューから削除されました。 udpateTimestamp
- 最後のメッセージカウンター更新のタイムスタンプ。
メッセージカウンターを組み合わせて、他の意味のあるデータも判断できます。たとえば、最後の更新以降にキューから消費されたメッセージの数を正確に知るには、countDelta
から messageCountDelta
を減算します。
6.6.2. メッセージカウンターの有効化
メッセージカウンターはブローカーのメモリーに若干影響を与える可能性があるため、デフォルトでは無効になっています。メッセージカウンターを使用するには、まずメッセージカウンターを有効にする必要があります。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 メッセージカウンターを有効にします。
<message-counter-enabled>true</message-counter-enabled>
メッセージカウンター履歴およびサンプリング期間を設定します。
<message-counter-max-day-history>7</message-counter-max-day-history> <message-counter-sample-period>60000</message-counter-sample-period>
message-counter-max-day-history
- キューメトリックを保存する必要のある日数。デフォルトは 10 日です。
message-counter-sample-period
- メトリックを収集するためにブローカーがキューをサンプリングする頻度 (ミリ秒単位)。デフォルトは 10000 ミリ秒です。
6.6.3. メッセージカウンターの取得
管理 API を使用してメッセージカウンターを取得できます。
前提条件
ブローカーでメッセージカウンターを有効にする必要があります。
詳細は、「メッセージカウンターの有効化」 を参照してください。
手順
管理 API を使用してメッセージカウンターを取得します。
// Retrieve a connection to the broker's MBeanServer. MBeanServerConnection mbsc = ... JMSQueueControlMBean queueControl = (JMSQueueControl)MBeanServerInvocationHandler.newProxyInstance(mbsc, on, JMSQueueControl.class, false); // Message counters are retrieved as a JSON string. String counters = queueControl.listMessageCounter(); // Use the MessageCounterInfo helper class to manipulate message counters more easily. MessageCounterInfo messageCounter = MessageCounterInfo.fromJSON(counters); System.out.format("%s message(s) in the queue (since last sample: %s)\n", messageCounter.getMessageCount(), messageCounter.getMessageCountDelta());
関連情報
- メッセージカウンターの詳細は、「キュー管理操作」 を参照してください。