付録A アクセプターおよびコネクター設定パラメーター
以下の表は、Netty ネットワーク接続の設定に使用される利用可能なパラメーターの一部を示しています。パラメーターとその値は、接続文字列の URI に追加されます。詳細については、ネットワーク接続でのアクセプターとコネクターの設定 を参照してください。各テーブルは、名前別にパラメーターをリスト表示し、アクセプターまたはコネクターと使用できるか、またはその両方とともに使用するかをメモします。たとえば、アクセプターでしか使用するなど、一部のパラメーターを使用できます。
すべての Netty パラメーターは org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants
クラスで定義されます。カスタマーポータル では、ソースコードをダウンロードできます。
パラメーター | 用途 | 説明 |
---|---|---|
batchDelay | 両方 |
パケットをアクセプターまたはコネクターに書き込む前に、ブローカーは |
connectionsAllowed | アクセプター |
アクセプターが許可する接続の数を制限します。この制限に達すると、DEBUG レベルのメッセージがログに出力され、接続は拒否されました。使用中のクライアントのタイプによって、接続が拒否されたときに何が起こるかが決まります。デフォルト値は |
directDeliver | 両方 |
メッセージがサーバーに到達し、待機しているコンシューマーに配信されると、デフォルトでは、メッセージが到達した同じスレッドで配信が実行されます。これにより、メッセージが比較的小さく、コンシューマーの数が少ない環境では適切な待ち時間が発生しますが、特にマルチコアマシンではスループットとスケーラビリティー全体のコストが発生します。レイテンシーを最小限に抑え、スループットが低い場合は、 |
handshake-timeout | アクセプター | 承認されていないクライアントが多数の接続を開かないようにし、開いた状態にします。各接続にはファイルハンドルが必要なため、他のクライアントでは利用できないリソースを消費します。 このタイムアウトにより、接続が認証されずにリソースを消費できる時間を制限します。接続が認証されると、リソース制限設定を使用してリソース消費を制限できます。
デフォルト値は タイムアウト値を編集したら、ブローカーを再起動する必要があります。 |
localAddress | コネクター | リモートアドレスへの接続時にクライアントが使用するローカルアドレスを指定します。通常、これはアプリケーションサーバーで使用され、Embeddent 接続に使用されるアドレスを制御するために Embedded を実行する場合に使用されます。local-address が設定されていない場合、コネクターは利用可能なローカルアドレスを使用します。 |
localPort | コネクター | リモートアドレスへの接続時にクライアントが使用するローカルポートを指定します。通常、これはアプリケーションサーバーで使用され、Embeddent 接続に使用されるポートを制御するために Embedded を実行する場合に使用されます。デフォルトに (0) が使用される場合、コネクターによりシステムで一時ポートを取得することが許可されます。有効なポートは 0 から 65535 です。 |
nioRemotingThreads | 両方 |
NIO を使用するように設定されている場合には、 ブローカーはデフォルトで受信パケットを処理するために |
tcpNoDelay | 両方 |
|
tcpReceiveBufferSize | 両方 |
TCP 受信バッファーのサイズ ( バイト単位 ) を決定します。デフォルト値は |
tcpSendBufferSize | 両方 |
TCP 送信バッファーのサイズ ( バイト単位 ) を決定します。デフォルト値は TCP バッファーサイズは、ネットワークの帯域幅およびレイテンシーに従って調整する必要があります。 つまり、TCP の送信/受信バッファーサイズは以下のように計算する必要があります。 buffer_size = bandwidth * RTT
帯域幅とは秒単位で、ネットワークラウンドトリップタイム (RTT) は秒単位になります。RTT は、 高速ネットワークでは、デフォルトからバッファーサイズを増やす必要がある場合があります。 |
パラメーター | 用途 | 説明 |
---|---|---|
httpClientIdleTime | アクセプター | 接続を維持するために空の HTTP 要求を送信する前にクライアントがアイドル状態でいられる期間。 |
httpClientIdleScanPeriod | アクセプター | アイドル状態のクライアントに対してスキャンを行う頻度 (ミリ秒単位)。 |
httpEnabled | アクセプター | 不要になりました。単一ポートがサポートされる場合、ブローカーは HTTP が使用されているかどうかを自動的に検出し、それ自体を設定するようになりました。 |
httpRequiresSessionId | 両方 |
|
httpResponseTime | アクセプター | 接続を維持するために空の HTTP 応答を送信する前にサーバーが待機する時間。 |
httpServerScanPeriod | アクセプター | 応答が必要なクライアントに対してスキャンを行う頻度 (ミリ秒単位)。 |
パラメーター | 用途 | 説明 |
---|---|---|
enabledCipherSuites | 両方 | SSL 通信に使用される暗号スイートのコンマ区切りリスト。
クライアントアプリケーションでサポートする最も安全な暗号スイートを指定します。コンマ区切りのリストを使用して、ブローカーとクライアントの両方に共通の暗号スイートのセットを指定する場合、または暗号スイートを指定しない場合には、ブローカーとクライアントは、使用する暗号スイートについて相互に交渉します。どの暗号スイートを指定すればよいかわからない場合は、まずクライアントをデバッグモードで実行してブローカーとクライアント間の接続を確立し、ブローカーとクライアントの両方に共通する暗号スイートを確認します。次に、ブローカーで
利用可能な暗号スイートは、ブローカーとクライアントによって使用される TLS プロトコルバージョンによって異なります。ブローカーをアップグレードした後にデフォルトの TLS プロトコルバージョンが変更された場合は、ブローカーとクライアントが共通の暗号スイートを使用できるようにするために、以前の TLS プロトコルバージョンを選択する必要がある場合があります。詳細は、 |
enabledProtocols | 両方 | SSL 通信に使用される TLS プロトコルバージョンのコンマ区切りリスト。TLS プロトコルのバージョンを指定しない場合、ブローカーは JVM のデフォルトバージョンを使用します。
ブローカーが JVM のデフォルトの TLS プロトコルバージョンを使用しており、ブローカーのアップグレード後にそのバージョンが変更された場合、ブローカーとクライアントが使用する TLS プロトコルバージョンに互換性がない可能性があります。新しい TLS プロトコルバージョンを使用することを推奨しますが、新しい TLS プロトコルバージョンをサポートしていないクライアントと相互運用するために、 |
forceSSLParameters | コネクター |
このコネクターの SSL コンテキストを設定するために、JVM システムプロパティー (
有効な値は |
keyStorePassword | 両方 | アクセプターで使用されると、サーバー側のキーストアのパスワードになります。
コネクターで使用されると、クライアント側のキーストアのパスワードになります。双方向 SSL(つまり相互認証) を使用している場合は、これはコネクターにのみ関係します。この値はサーバー上で設定可能ですが、ダウンロードしてクライアントで使用します。クライアントでサーバーの設定と異なるパスワードを使用する必要がある場合は、カスタムの |
keyStorePath | 両方 | アクセプターで使用される場合は、サーバーの証明書を保持するサーバーの SSL キーストアへのパスになります ( 自己署名または認証局によって署名されているかどうか )。
コネクターで使用される場合、これはクライアント証明書を保持するクライアント側の SSL キーストアへのパスとなります。双方向 SSL(つまり相互認証) を使用している場合は、これはコネクターにのみ関係します。この値はサーバー上で設定されますが、ダウンロードしてクライアントで使用します。クライアントでサーバーの設定と異なるパスを使用する必要がある場合は、カスタムの |
keyStoreAlias | 両方 | アクセプターで使用される場合は、接続時にクライアントに提示するキーストア内のキーのエイリアスになります。コネクターで使用される場合は、クライアントがサーバーに接続するときにサーバーに提示するキーストア内のキーのエイリアスになります。双方向 SSL、つまり相互認証を使用する場合、これはコネクターにのみ関係します。 |
needClientAuth | アクセプター |
このプロパティーは、このアクセプターに接続するクライアントに双方向 SSL が必要であることを伝えます。有効な値は |
sslEnabled | 両方 |
SSL を有効にするには |
trustManagerFactoryPlugin | 両方 |
これは、
ブローカーの Java クラスパスに、指定したプラグインを配置する必要があります。 |
trustStorePassword | 両方 | アクセプターで使用されると、サーバー側のトラストストアのパスワードになります。双方向 SSL(つまり相互認証) を使用している場合、アクセプターにのみ関係します。
コネクターで使用されると、クライアント側のトラストストアのパスワードになります。この値はサーバー上で設定可能ですが、ダウンロードしてクライアントで使用します。クライアントがサーバーで設定されているものとは異なるパスワードを使用する必要がある場合は、通常の |
sniHost | 両方 |
アクセプターで使用される場合、
受信接続に
コネクターで使用されると、SSL 接続の |
sslProvider | 両方 |
このオプションは、OpenSSL でサポートされ、JDK プロバイダーでサポートされていない、特別な ciphersuite-elliptic 曲線の組み合わせを使用する場合に便利です。 |
trustStorePath | 両方 | アクセプターで使用される場合、これはサーバーが信頼するすべてのクライアントのキーを保持するサーバー側の SSL キーストアへのパスとなります。双方向 SSL(つまり相互認証) を使用している場合、アクセプターにのみ関係します。
コネクターで使用される場合は、クライアント側の SSL/TLS キーストアへのパスとなります。これは、クライアントが信頼するすべてのサーバーの公開鍵を保持します。この値はサーバー上で設定可能ですが、ダウンロードしてクライアントで使用します。クライアントでサーバーの設定と異なるパスを使用する必要がある場合は、カスタムの |
useDefaultSslContext | コネクター |
コネクターが (
このパラメーターが |
verifyHost | 両方 | コネクターで使用されると、サーバーの SSL 証明書の CN または Subject Alternative Name の値は、一致することを確認するために、接続先のホスト名と比較されます。これは一方向および双方向 SSL の両方に役立ちます。 アクセプターで使用されると、接続しているクライアントの SSL 証明書の CN または Subject Alternative Name の値がホスト名と比較され、それらが一致することを確認します。これは双方向 SSL でのみ便利です。
有効な値は |
wantClientAuth | アクセプター |
このアクセプターに接続するクライアントに対して、双方向 SSL が要求されているが、必須ではないことを伝えます。有効な値は
|