第32章 後方互換性と前方互換性

JBoss EAP は JBoss EAP 6 のように HornetQ をメッセージングブローカーとして使用していた古いバージョンの JBoss EAP との後方互換性および前方互換性をサポートしています。この 2 つの互換性モードは、HornetQ のコアプロトコルをサポートする、JBoss EAP の組み込みメッセージングサーバーの ActiveMQ Artemis によって提供されます。

  • 前方互換性: HornetQ を使用するレガシー JMS クライアントは、ActiveMQ Artemis を実行している JBoss EAP 7 サーバーに接続できます。
  • 後方互換性: JBoss EAP メッセージングを使用する JBoss EAP 7 の JMS クライアントは、HornetQ を実行しているレガシー JBoss EAP 6 サーバーに接続できます。

32.1. 前方互換性

前方互換性では、レガシー JBoss EAP 6 の JMS クライアントへのコード変更は必要ありません。サポートは JBoss EAP messaging-activemq サブシステムおよびそのリソースによって提供されます。前方互換性のサポートを有効にするには、JBoss EAP 7 サーバーの設定に以下の変更を行います。手順ごとに、スタンドアロンサーバーの管理 CLI コマンドの例を示します。

  • リモートレガシークライアントのポート 4447 でリッスンする socket-binding を作成します。

    /socket-binding-group=standard-sockets/socket-binding=legacy-remoting:add(port=4447)
  • 前の手順で作成した socket-binding を使用するレガシー remote-connector を作成します。これは JNDI ルックアップに必要です。

    /subsystem=remoting/connector=legacy-remoting-connector:add(socket-binding=legacy-remoting)
  • ポート 5445 でリッスンするレガシーメッセージング socket-binding を設定します。

    /socket-binding-group=standard-sockets/socket-binding=legacy-messaging:add(port=5445)
  • 前の手順のバインディングを使用する messaging-activemq サブシステムに remote-connectorremote-acceptor を設定します。

    /subsystem=messaging-activemq/server=default/remote-connector=legacy-messaging-connector:add(socket-binding=legacy-messaging)
    
    /subsystem=messaging-activemq/server=default/remote-acceptor=legacy-messaging-acceptor:add(socket-binding=legacy-messaging)
  • messaging-activemq サブシステムの legacy-connection-factory 要素にレガシー HornetQ JMS ConnectionFactory を作成します。

    /subsystem=messaging-activemq/server=default/legacy-connection-factory=legacy-discovery:add(entries=[java:jboss/exported/jms/LegacyRemoteConnectionFactory], connectors=[legacy-messaging-connector])
  • レガシー HornetQ JMS 宛先を作成し、legacy-entries 属性を jms-queue または jms-topic リソースに含めます。

    jms-queue add --queue-address=myQueue --entries=[java:jboss/exported/jms/myQueue-new] --legacy-entries=[java:jboss/exported/jms/myQueue]
    
    jms-topic add --topic-address=myTopic --entries=[java:jboss/exported/jms/myTopic-new] --legacy-entries=[java:jboss/exported/jms/myTopic]

    以下の例に従って、既存のキューまたはトピックに legacy-entries を追加できます。

    /subsystem=messaging-activemq/server=default/jms-queue=myQueue:write-attribute(name=legacy-entries,value=[java:jboss/exported/jms/myQueue])

    entries 属性が JBoss EAP メッセージング JMS クライアントによって使用されるのに対して、legacy-entries はレガシー HornetQ JMS クライアントによって使用されます。レガシー JMS クライアントは、このレガシー JMS リソースを検索し、JBoss EAP 7 と通信します。

    注記

    レガシー JMS クライアントでのコード変更を回避するには、messaging-activemq サブシステムに設定されたレガシー JNDI エントリーが、レガシー JMS クライアントによって想定されるルックアップと一致する必要があります。

管理 CLI の移行操作

管理 CLI の migrate 操作を実行して messaging サブシステム設定を更新する場合、ブール値の引数 add-legacy-entriestrue に設定されていると、messaging-activemq サブシステムは legacy-connection-factory リソースを作成し、legacy-entriesjms-queue および jms-topic リソースに追加します。移行された messaging-activemq サブシステムのレガシーエントリーは、レガシー messaging サブシステムに指定されたエントリーに対応し、通常のエントリーは -new 接尾辞を付加して作成されます。

migrate 操作の実行時にブール値の引数 add-legacy-entriesfalse に設定されていると、messaging-activemq サブシステムにはレガシーリソースが作成されず、レガシー JMS クライアントは JBoss EAP 7 サーバーと通信できません。