6.4. 管理操作
JMX または JMS メッセージを使用して AMQ Broker を管理する場合でも、同じ API 管理操作を使用できます。管理 API を使用すると、ブローカー、アドレス、およびキューを管理できます。
6.4.1. ブローカー管理操作
管理 API を使用してブローカーを管理できます。
- キューのリスト表示、作成、デプロイ、破棄
デプロイされたキューのリストは、
getQueueNames()
メソッドで取得できます。キューは、
ActiveMQServerControl
の管理操作createQueue()
、deployQueue()
、またはdestroyQueue()
を使用して作成または破棄できます (ObjectName
org.apache.activemq.artemis:broker="BROKER_NAME"
またはリソース名server
を使用)。deployQueue
が何もしない間、キューがすでに存在する場合、createQueue
は失敗します。- キューの一時停止および再開
-
QueueControl
は、基礎となるキューを一時停止したり、再開したりすることができます。キューが一時停止すると、メッセージは受信されますが、配信されません。再開すると、キューに格納されたメッセージの配信を開始します (存在する場合)。 - リモート接続のリスト表示および閉じる
listRemoteAddresses()
を使用して、クライアントのリモートアドレスを取得します。また、closeConnectionsForAddress()
メソッドを使用して、リモートアドレスに関連する接続を閉じることも可能です。または、
listConnectionIDs()
を使用して接続 ID をリスト表示し、listSessions()
を使用して指定の接続 ID の全セッションをリスト表示します。- トランザクションの管理
ブローカーがクラッシュした場合、ブローカーの再起動時に一部のトランザクションを手動で介入する必要がある場合があります。以下の方法を使用して、発生した問題を解決します。
listPreparedTransactions()
メソッドリストを使用して、準備済み状態のトランザクションをリスト表示します (トランザクションは不透明な Base64 文字列として表されます)。commitPreparedTransaction()
またはrollbackPreparedTransaction()
を使用して、指定された準備済みトランザクションをコミットまたはロールバックし、ヒューリスティックトランザクションを解決します。listHeuristicCommittedTransactions()
メソッドおよびlistHeuristicRolledBackTransactions
メソッドを使用して、ヒューリスティックに完了したトランザクションをリスト表示します。- メッセージカウンターの有効化およびリセット
enableMessageCounters()
またはdisableMessageCounters()
メソッドを使用して、メッセージカウンターを有効または無効にします。resetAllMessageCounters()
メソッドとresetAllMessageCounterHistories()
メソッドを使用して、メッセージカウンターをリセットします。- ブローカー設定および属性の取得
-
ActiveMQServerControl
は、そのすべての属性 (たとえば、ブローカーのバージョンを取得するためのgetVersion()
メソッドなど) を通じて、ブローカーの設定を公開します。 - コアブリッジおよび迂回のリスト表示、作成、破棄
デプロイされた Core Bridge をリスト表示し、
getBridgeNames()
とgetDivertNames()
メソッドをそれぞれ使用して迂回します。ActiveMQServerControl
で、createBridge()
とdestroyBridge()
またはcreateDivert()
とdestroyDivert()
を使用するブリッジと迂回を使用して、作成または破棄します (ObjectName
org.apache.activemq.artemis:broker="BROKER_NAME"
またはリソース名server
を使用)。- ブローカーを停止し、現在割り当てられているクライアントでフェイルオーバーを強制する
ActiveMQServerControl
のforceFailover()
を使用します (ObjectName
org.apache.activemq.artemis:broker="BROKER_NAME"
またはリソース名server
を使用)。注記このメソッドは実際にブローカーを停止するため、エラーが発生する可能性が高くなります。正確なエラーは、メソッドの呼び出しに使用した管理サービスによって異なります。
6.4.2. アドレス管理操作
管理 API を使用してアドレスを管理できます。
アドレスの管理には、ObjectName
org.apache.activemq.artemis:broker="<broker-name>", component=addresses,address="<address-name>"
またはリソース名 address.<address-name>
の AddressControl
クラスを使用します。
addRole()
メソッドや removeRole()
メソッドを使用して、アドレスのロールやパーミッションを変更します。getRoles()
メソッドで、キューに関連付けられたすべてのロールをリスト表示できます。
6.4.3. キュー管理操作
管理 API を使用してキューを管理できます。
コア管理 API はキューを処理します。QueueControl
クラスは、キューの管理操作を定義します (ObjectName
,org.apache.activemq.artemis:broker="<broker-name>",component=addresses,address="<bound-address>",subcomponent=queues,routing-type="<routing-type>",queue="<queue-name>"
またはリソース名 queue.<queue-name>
を使用)。
キューの管理操作のほとんどは、単一のメッセージ ID (単一のメッセージを削除するなど) またはフィルター (指定のプロパティーですべてのメッセージを期限切れにするなど) を取ります。
- 期限切れで、デッドレターアドレスに送信し、メッセージの移動
expireMessages()
メソッドを使用して、キューのメッセージを失効させます。期限切れアドレスが定義されている場合、メッセージはこのアドレスに送信されます。それ以外の場合、メッセージは破棄されます。broker.xml
設定ファイルのaddress-settings
要素で、アドレスまたはアドレス セット (およびそれらのアドレスにバインドされたキュー) の有効期限アドレスを定義できます。例は、デフォルトのブローカー設定について の「デフォルトのメッセージアドレス設定」セクションを参照してください。sendMessagesToDeadLetterAddress()
メソッドを使用して、デッドレターアドレスにメッセージを送信します。このメソッドは、デッドレターアドレスに送信されたメッセージの数を返します。デッドレターアドレスが定義されている場合、メッセージはこのアドレスに送信されます。一致しない場合、メッセージはキューから削除され、破棄されます。broker.xml
設定ファイルのaddress-settings
要素で、アドレスまたはアドレス セット (およびそれらのアドレスにバインドされたキュー) のデッドレターアドレスを定義できます。例は、デフォルトのブローカー設定について の「デフォルトのメッセージアドレス設定」セクションを参照してください。moveMessages()
メソッドを使用して、あるキューから別のキューにメッセージを移動します。- メッセージのリスト表示と削除
listMessages()
メソッドを使用して、あるキューからメッセージをリスト表示します。Map
の配列 (各メッセージに対して 1 つのMap
) を返します。removeMessages()
メソッドを使用してキューからメッセージを削除します。これは、単一のメッセージ ID バリアントのboolean
、またはフィルターバリアントの削除されたメッセージの数を返します。このメソッドは、filter
引数を取り、フィルターされたメッセージのみを削除します。フィルターを空の文字列に設定すると、すべてのメッセージが削除されます。- メッセージのカウント
-
キューに入っているメッセージの数は、
getMessageCount()
メソッドで返されます。または、countMessages()
は指定のフィルターに一致するキュー内のメッセージの数を返します。 - メッセージの優先度の変更
-
メッセージの優先度は、単一のメッセージ ID バリアントの
boolean
またはフィルターバリアントの更新されたメッセージの数を返すchangeMessagesPriority()
メソッドを使用して変更できます。 - メッセージカウンター
-
メッセージカウンターは、
listMessageCounter()
およびlistMessageCounterHistory()
メソッドを使用して、キューに対してリスト表示することができます (「メッセージカウンターの使用」を参照)。メッセージカウンターは、resetMessageCounter()
メソッドを使用して、1 つのキューに対してリセットすることもできます。 - キュー属性の取得
-
QueueControl
は、属性を使用してキュー設定を公開します (たとえば、キューのフィルターが作成されている場合はこれを取得するためにgetFilter()
を使用、キューが永続的かどうかを知るためにはisDurable()
を使用など)。 - キューの一時停止および再開
-
QueueControl
は、基礎となるキューを一時停止したり、再開したりすることができます。キューが一時停止すると、メッセージは受信されますが、配信されません。再開すると、キューに格納されたメッセージの配信を開始します (存在する場合)。
6.4.4. リモートリソース管理操作
管理 API を使用してブローカーのリモートリソース (アクセプター、迂回、ブリッジなど) を起動および停止し、ブローカーを完全に停止せずに特定の期間にオフラインにすることができます。
- アクセプター
-
start()
またはを使用してアクセプターを開始または停止します。AcceptorControl
クラスのstop()
メソッド (ObjectName
org.apache.activemq.artemis:broker="<broker-name>",component=acceptors,name="<acceptor-name>"
またはリソース名acceptor.<address-name>
を使用)。アクセプターパラメーターは、AcceptorControl
属性を使用して取得できます。アクセプターの詳細は、ネットワーク接続: アクセプターとコネクター を参照してください。 - Diverts
-
DivertControl
クラスのstart()
またはstop()
メソッドを使用して、ダイバートを開始または停止します (ObjectName
org.apache.activemq.artemis:broker="<broker-name>",component=diverts,name="<divert-name>"
またはリソース名divert.<divert-name>
を使用)。迂回パラメーターは、DivertControl
属性を使用して取得できます。 - ブリッジ
-
start()
(リスピン) を使用して、ブリッジを開始または停止します。BridgeControl
クラスのstop()
メソッド (ObjectName
org.apache.activemq.artemis:broker="<broker-name>",component=bridge,name="<bridge-name>"
or the resource namebridge.<bridge-name>
を伴う)。ブリッジのパラメーターは、BridgeControl
属性を使用して取得することができます。 - ブロードキャストグループ
-
BroadcastGroupControl
クラスのstart()
またはstop()
メソッドを使用して、ブロードキャストグループを開始または停止します (ObjectName
org.apache.activemq.artemis:broker="<broker-name>",component=broadcast-group,name="<broadcast-group-name>"
またはリソース名broadcastgroup.<broadcast-group-name>
を使用)。ブロードキャストグループのパラメーターは、BroadcastGroupControl
属性を使用して取得することができます。詳細は ブローカー検出メソッド を参照してください。 - 検出グループ
-
DiscoveryGroupControl
クラスのstart()
またはstop()
メソッドを使用して、ディスカバリーグループを開始または停止します (ObjectName
org.apache.activemq.artemis:broker="<broker-name>",component=discovery-group,name="<discovery-group-name>"
またはリソース名discovery.<discovery-group-name>
を使用)。ディスカバリーグループのパラメーターは、DiscoveryGroupControl
属性を使用して取得することができます。詳細は ブローカー検出メソッド を参照してください。 - クラスター接続
-
ClusterConnectionControl
クラスのstart()
またはstop()
メソッドを使用して、クラスター接続を開始または停止します (h theObjectName
org.apache.activemq.artemis:broker="<broker-name>",component=cluster-connection,name="<cluster-connection-name>"
またはリソース名clusterconnection.<cluster-connection-name>
を使用)。クラスター接続パラメーターは、ClusterConnectionControl
属性を使用して取得できます。詳細は、ブローカークラスターの作成を参照してください。