6.3. JMS API を使用した AMQ Broker の管理

Java Message Service (JMS) API を使用すると、メッセージの作成、送信、受信、読み取りが可能です。JMS および AMQ JMS クライアントを使用してブローカーを管理できます。

6.3.1. JMS メッセージおよび AMQ JMS クライアントを使用したブローカー管理の設定

JMS を使用してブローカーを管理するには、まず manage パーミッションでブローカーの管理アドレスを設定する必要があります。

手順

  1. <broker_instance_dir>/etc/broker.xml 設定ファイルを開きます。
  2. <management-address> 要素を追加し、管理アドレスを指定します。

    デフォルトでは、管理アドレスは queue.activemq.management です。デフォルトを使用しない場合は、別のアドレスを指定する必要があります。

    <management-address>my.management.address</management-address>
  3. 管理アドレスに manage ユーザーパーミッションタイプを指定します。

    このパーミッションタイプにより、管理アドレスの管理メッセージが受信および処理できるようになります。

    <security-setting-match="queue.activemq.management">
        <permission-type="manage" roles="admin"/>
    </security-setting>

6.3.2. JMS API および AMQ JMS クライアントを使用したブローカーの管理

JMS メッセージを使用して管理操作を呼び出すには、AMQ JMS クライアントは特別な管理キューをインスタンス化する必要があります。

手順

  1. QueueRequestor を作成して、管理アドレスにメッセージを送信し、返信を受信します。
  2. Message を作成します。
  3. ヘルパークラス org.apache.activemq.artemis.api.jms.management.JMSManagementHelper を使用して、メッセージに管理プロパティーを記入します。
  4. QueueRequestor を使ってメッセージを送信します。
  5. ヘルパークラス org.apache.activemq.artemis.api.jms.management.JMSManagementHelper を使用して、管理応答から操作結果を取得します。

例6.2 キュー内のメッセージ数の表示

以下の例は、JMS API を使用して JMS キュー exampleQueue でメッセージの数を表示する方法を示しています。

Queue managementQueue = ActiveMQJMSClient.createQueue("activemq.management");

QueueSession session = ...
QueueRequestor requestor = new QueueRequestor(session, managementQueue);
connection.start();
Message message = session.createMessage();
JMSManagementHelper.putAttribute(message, "queue.exampleQueue", "messageCount");
Message reply = requestor.request(message);
int count = (Integer)JMSManagementHelper.getResult(reply);
System.out.println("There are " + count + " messages in exampleQueue");