8.3. コネクター

コネクターは、統合 JBoss EAP メッセージングサーバーに接続する方法を定義しており、クライアントで接続するために使用されます。

コネクターは実際にはクライアントで使用されるのに、なぜサーバーで定義するのかとお考えになるかもしれません。これには、以下のような理由があります。

  • 場合によっては、サーバーが別のサーバーに接続するときにクライアントとして動作する場合があります。たとえば、あるサーバーが別のサーバーへのブリッジとして機能するか、またはクラスターに参加する必要がある可能性があります。この場合、サーバーは他のサーバーに接続する方法を認識する必要があり、その接続方法はコネクターで定義されます。
  • サーバーが JNDI でクライアントからルックアップされる ConnectionFactory を使用するコネクターを提供できるため、サーバーへの接続の作成が簡単になります。

サーバーごとに任意の数のコネクターを定義できます。以下の設定例は full-ha 設定プロファイルをベースとしたもので、各タイプのコネクターが含まれています。

<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0">
  <server name="default">
    ...
    <http-connector name="http-connector" endpoint="http-acceptor" socket-binding="http" server-name="messaging-server-1"/>
    <remote-connector name="legacy-remoting-connector" socket-binding="legacy-remoting"/>
    <in-vm-connector name="in-vm" server-id="0"/>
    ...
  </server>
</subsystem>

full-ha プロファイルの http-acceptor と同様に、http-connectorundertow サブシステムで定義されたデフォルトの http-listener を使用します。endpoint 属性は、接続する http-acceptor を宣言します。この場合、コネクターはデフォルトの http-acceptor に接続します。

JBoss EAP 7.1 では、http-connector に新しい server-name 属性が導入されました。この新しい属性はオプションですが、複数の ActiveMQ Artemis インスタンスを実行しているリモートサーバーの適切な http-acceptor に接続できることが要求されます。この属性が定義されていない場合、値は実行時に解決され、コネクターが定義されている親 ActiveMQ Artemis サーバーの名前になります。

また、remote-connectorremote-acceptor のカウンターパートとして同じ socket-binding を参照します。最後に、in-vm-connectorin-vm-acceptor は同じサーバーインスタンス内で実行しているため、server-id に同じ値を使用します。

注記

パブリックインターフェースのバインドアドレスが 0.0.0.0 に設定されている場合は、JBoss EAP サーバーの起動時に以下の警告がログに表示されます。

AMQ121005: Invalid "host" value "0.0.0.0" detected for "connector" connector. Switching to <HOST_NAME>. If this new address is incorrect please manually configure the connector to use the proper one.

これは、リモートコネクターが 0.0.0.0 アドレスを使用してサーバーに接続できず、messaging-activemq サブシステムがサーバーのホスト名で置き換えようとするためです。管理者は、ソケットバインディングに異なるインターフェースアドレスを使用するようリモートコネクターを設定する必要があります。