第3章 ネットワーク接続: プロトコル


AMQ Broker にはプラグ可能なプロトコルアーキテクチャーがあるため、ネットワーク接続に 1 つ以上のプロトコルを簡単に有効化できます。

ブローカーは以下のプロトコルをサポートします。

注記

上記のプロトコルのほかに、ブローカーはコアプロトコルと呼ばれる独自のネイティブプロトコルもサポートします。このプロトコルの以前のバージョンは HornetQ と呼ばれ、Red Hat JBoss Enterprise Application Platform によって使用されていました。

3.1. プロトコルを使用するためのネットワーク接続の設定

使用する前に、プロトコルをネットワーク接続に関連付ける必要があります。(ネットワーク接続を作成および設定する方法の詳細については 、ネットワーク接続: アクセプターとコネクター を参照してください。) BROKER_INSTANCE_DIR/etc/broker.xml ファイルにあるデフォルト設定には、すでに定義された接続が複数含まれています。便宜上、AMQ Broker にはサポートされる各プロトコルのアクセプターと、すべてのプロトコルをサポートするデフォルトのアクセプターが含まれます。

デフォルトのアクセプターの概要

以下は、broker.xml 設定ファイルにデフォルトで含まれるアクセプターです。

<configuration>
  <core>
    ...
    <acceptors>

      <!-- All-protocols acceptor -->
      <acceptor name="artemis">tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor>

      <!-- AMQP Acceptor. Listens on default AMQP port for AMQP traffic -->
      <acceptor name="amqp">tcp://0.0.0.0:5672?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=AMQP;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor>

      <!-- STOMP Acceptor -->
      <acceptor name="stomp">tcp://0.0.0.0:61613?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=STOMP;useEpoll=true</acceptor>

      <!-- HornetQ Compatibility Acceptor. Enables HornetQ Core and STOMP for legacy HornetQ clients. -->
      <acceptor name="hornetq">tcp://0.0.0.0:5445?anycastPrefix=jms.queue.;multicastPrefix=jms.topic.;protocols=HORNETQ,STOMP;useEpoll=true</acceptor>

      <!-- MQTT Acceptor -->
      <acceptor name="mqtt">tcp://0.0.0.0:1883?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=MQTT;useEpoll=true</acceptor>

    </acceptors>
    ...
  </core>
</configuration>

特定のネットワーク設定でプロトコルを有効にする唯一の要件は、protocols パラメーターを アクセプターの URI に追加することです。パラメーターの値は、プロトコル名のコンマ区切りリストである必要があります。protocol パラメーターが URI から省略される場合、すべてのプロトコルが有効になります。

たとえば、AMQP プロトコルを使用して 3232 番ポートでメッセージを受信するためにアクセプターを作成するには、以下の手順に従います。

  1. BROKER_INSTANCE_DIR/etc/broker.xml 設定ファイルを開きます。
  2. 以下の行を <acceptors> スタンザに追加します。
<acceptor name="ampq">tcp://0.0.0.0:3232?protocols=AMQP</acceptor>

デフォルトのアクセプターの追加パラメーター

最小限のアクセプター設定では、接続 URI の一部としてプロトコルを指定します。ただし、broker.xml 設定ファイルのデフォルトのアクセプターには追加のパラメーターが設定されています。以下の表は、デフォルトのアクセプターに設定された追加パラメーターの詳細を示しています。

Acceptor(s)パラメーター説明

All-protocols acceptor

AMQP

STOMP

tcpSendBufferSize

TCP 送信バッファーのサイズ (バイト単位)。デフォルト値は 32768 です。

tcpReceiveBufferSize

TCP 受信バッファーのサイズ (バイト単位)。デフォルト値は 32768 です。

TCP バッファーサイズは、ネットワークの帯域幅およびレイテンシーに従って調整する必要があります。

つまり、TCP の送信/受信バッファーサイズは以下のように計算する必要があります。

buffer_size = bandwidth * RTT

帯域幅とは秒単位で、ネットワークラウンドトリップタイム (RTT) は秒単位になります。RTT は、ping ユーティリティーを使用して簡単に測定できます。

高速ネットワークでは、デフォルトからバッファーサイズを増やす必要がある場合があります。

All-protocols acceptor

AMQP

STOMP

HornetQ

MQTT

useEpoll

サポートするシステム (Linux) を使用する場合は Netty epoll を使用します。Netty ネイティブトランスポートは NIO トランスポートよりも優れたパフォーマンスを提供します。このオプションのデフォルト値は true です。オプションを false に設定すると、OIO が使用されます。

All-protocols acceptor

AMQP

amqpCredits

メッセージの合計サイズに関係なく、AMQP プロデューサーが送信できるメッセージの最大数。デフォルト値は 1000 です。

AMQP メッセージのフローを制御するためにクレジットが使用される方法の詳細は、「AMQP メッセージのブロック」 を参照してください。

All-protocols acceptor

AMQP

amqpLowCredits

ブローカーによってプロデューサーのクレジットが返送される低いしきい値。デフォルト値は 300 です。プロデューサーがこのしきい値に達すると、ブローカーはプロデューサーに十分なクレジットを送信し、amqpCredits 値を復元します。

AMQP メッセージのフローを制御するためにクレジットが使用される方法の詳細は、「AMQP メッセージのブロック」 を参照してください。

HornetQ 互換性アクセプター

anycastPrefix

anycast および multicast の両方を使用するアドレスに接続するときに、クライアントが anycast および anycast ルーティングタイプを指定するために使用する接頭辞。デフォルト値は jms.queue です。

アドレスへの接続時にクライアントがルーティングタイプを指定できるように接頭辞を設定する方法は、「アクセプター設定へのルーティングタイプの追加」 を参照してください。

multicastPrefix

anycast および multicast の両方を使用するアドレスへの接続時に multicast ルーティングタイプを指定するためにクライアントが使用する接頭辞。デフォルト値は jms.topic です。

アドレスへの接続時にクライアントがルーティングタイプを指定できるように接頭辞を設定する方法は、「アクセプター設定へのルーティングタイプの追加」 を参照してください。

関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.