5.10. 接続ファクトリの設定

JBoss Messaging はデフォルトでは起動時に JNDI 内で 2 つの接続ファクトリをバインドするように設定されています。
1 つ目の接続ファクトリはデフォルトの非クラスター化した接続ファクトリです。この接続ファクトリにより元々 JBossMQ に対して書き込みされたアプリケーションとの互換性を維持することができ、自動フェールオーバーまたは負荷分散は含まれていません。クライアント側の自動フェールオーバーまたは負荷分散が必要でない場合は、この 1 つ目の接続ファクトリを使用してください。
1 つ目の接続ファクトリは以下の JNDI コンテキストにバインドされています。
  • /ConnectionFactory
  • /XAConnectionFactory
  • java:/ConnectionFactory
  • java:/XAConnectionFactory.
2 つ目の接続ファクトリはデフォルトのクラスター化した接続ファクトリで、以下の JNDI コンテキストにバインドされています。
  • /ClusteredConnectionFactory
  • /ClusteredXAConnectionFactory
  • java:/ClusteredConnectionFactory
  • java:/ClusteredXAConnectionFactory
ある接続ファクトリにデフォルトのクライアント ID を提供したり、接続ファクトリを別の JNDI の場所にバインドしたい場合は、よく考慮した上で、追加の接続ファクトリを設定およびデプロイします。新しい接続ファクトリをデプロイするには connection-factories-service.xml で、新規の ConnectionFactory 管理 Bean を設定します。
また、新しいサービスデプロイメント記述子 <name>-service.xml を作成したり、$JBOSS_HOME/server/messaging/deploy でそれをデプロイすることもできます。
ご使用の接続ファクトリで関連する属性を設定することで、自動フェールオーバーまたは負荷分散に対応できます。

例5.1 接続ファクトリ

この例の接続ファクトリは、事前設定したクライアント ID myClientID を持つ接続ファクトリを作成し、JNDI ツリーの /MyConnectionFactory/factories/cf の 2 つの場所にバインドされます。
例では以下のデフォルト値を無効にします。
  • PreFetchSize
  • DefaultTempQueueFullSize
  • DefaultTempQueuePageSize
  • DefaultTempQueueDownCacheSize
  • DupsOKBatchSize
  • SupportsFailover
  • SupportsLoadBalancing
  • LoadBalancingFactory
この接続ファクトリは、デフォルトのリモートコネクターを使用します。その接続ファクトリを持つ別のリモートコネクターを使用するには、Connector 属性を変更して、使用したいコネクターのサービス名を指定します。
<mbean code="org.jboss.jms.server.connectionfactory.ConnectionFactory"
  name="jboss.messaging.connectionfactory:service=MyConnectionFactory"
  xmbean-dd="xmdesc/ConnectionFactory-xmbean.xml">
  <depends optional-attribute-name="ServerPeer">
    jboss.messaging:service=ServerPeer
  </depends>
  <depends optional-attribute-name="Connector">
    jboss.messaging:service=Connector,transport=bisocket
  </depends>
  <depends>jboss.messaging:service=PostOffice</depends>

  <attribute name="JNDIBindings">
    <bindings>
    <binding>/MyConnectionFactory</binding>
    <binding>/factories/cf</binding>
    </bindings>
  </attribute>
  
  <attribute name="ClientID">myClientID</attribute>

  <attribute name="SupportsFailover">true</attribute>
  
  <attribute name="SupportsLoadBalancing">false</attribute>  
  
  <attribute name="LoadBalancingFactory">
    org.acme.MyLoadBalancingFactory
  </attribute>
      
  <attribute name="PrefetchSize">1000</attribute> 

  <attribute name="SlowConsumers">false</attribute>
  
  <attribute name="StrictTck">true</attribute>
  
  <attribute name="SendAcksAsync">false</attribute>

  <attribute name="DefaultTempQueueFullSize">50000</attribute>
  
  <attribute name="DefaultTempQueuePageSize">1000</attribute> 
    
  <attribute name="DefaultTempQueueDownCacheSize">1000</attribute> 
  
  <attribute name="DupsOKBatchSize">10000</attribute> 
</mbean>

5.10.1. ConnectionFactory 管理 Bean の属性

ClientID
接続ファクトリはクライアント ID を付けて事前設定することができます。この接続ファクトリで作成された接続はすべてこのクライアント ID を取得します。
JNDIBindings
この接続ファクトリに使用できる JNDI バインディングを一覧表示します。
PrefetchSize
コンシューマーフロー制御の目的で一度にウィンドウが保持できるメッセージ数を指定します。このウィンドウのサイズはサーバーがブロックされずにコンシューマーに送信できるメッセージ数を決定します。各コンシューマはコンシュームするメッセージのバッファーを管理します。
Transmission Control Protocol (TCP) は、独自のフロー制御を別に実装します。TCP ウィンドウのサイズが PrefetchSize パラメーターより小さいと、メッセージ消費がブロックされる可能性もあります。
SlowConsumers
速度の遅いコンシューマー用の許容範囲のバッファサイズを小さくするか指定します。速度の遅いコンシューマと速いコンシューマが混在している場合は、速度の遅いコンシューマーのバッファーサイズを小さくすることにより、速度の速いコンシューマーはより多くのメッセージをコンシュームすることになります。バッファリングを完全に無効にすることは不可能ですが、SlowConsumers 属性を true に設定することで、バッファーサイズは小さくなります。この属性を true に設定することは、PrefetchSize1 に設定することと同等であり、これは使用できる最小値です。
StrictTck
属性を true に設定すると、厳密な JMS 動作が有効になります。厳密な JMS 動作はテクノロジ互換性キット (TCK) で必要です。
SendAcksAsync
属性を true に設定すると、非同期に受信確認が送信されます。これにより、特に auto_acknowledge モードがアクティブな場合に、パフォーマンスを向上させることができます。
DefaultTempQueueFullSize
一時的なフルサイズのキューのデスティネーションにページングパラメーターを指定するオプションの属性であり、この接続ファクトリで作成される接続にスコープされます。デフォルト値は 200000 です。これらの属性に関する詳細は 「Destination paging parameters」 を参照してください。
DefaultTempQueuePageSize
一時的なページサイズのデスティネーションにページングパラメーターを指定するオプションの属性であり、この接続ファクトリで作成される接続にスコープされます。デフォルト値は 2000 です。これらの属性に関する詳細は 「Destination paging parameters」 を参照してください。
DefaultTempQueueDownCacheSize
一時的な Down Cache サイズのデスティネーションにページングパラメーターを指定するオプションの属性であり、この接続ファクトリで作成される接続にスコープされます。デフォルト値は 2000 です。これらの属性に関する詳細は 「Destination paging parameters」 を参照してください。
DupsOKBatchSize
ローカルにバッファされた DUPS_OK_ACKNOWLEDGE の受信確認の数をそれらが送信される前に指定します。デフォルト値は 2000 です。
SupportsLoadBalancing
クライアント側の負荷分散がクラスター化したインストール上の接続ファクトリに有効であるか指定します。負荷分散が有効な場合、その接続ファクトリで作成された接続はクラスターのノード全体で負荷分散されるようになります。特定のノードで作成された接続はそのノードに留まります。デフォルト値は false です。
SupportsFailover
クライアント側の自動フェールオーバーがクラスター化したインストール上の接続ファクトリに有効であるか指定します。自動フェールオーバーが有効な場合は、接続に関する問題が検出された時に、JBoss Messaging は自動的にクラスター内の別のノードに透過的にフェールオーバーします。デフォルト値は false です。

注記

自動フェールオーバーが無効な場合、同期の JMS 動作で接続の例外を検出することがユーザーコードの役目です。JMS ExceptionListener をインストールして、非同期に例外を検出する必要があります。例外が検出されると、クライアント側のコードは HAJNDI を介して新しい接続ファクトリを検索し、接続を再作成する必要があります。
DisableRemotingChecks
接続ファクトリが対応する JBoss Remoting Connector が適切な値を使用していることを確認するかどうか設定します。JBoss Messaging はこうした値に非常に精度の高い確認を行うため、変更する必要はほとんどありません。このサニティチェックを無効にするには、DisableRemotingChecksfalse に設定します。デフォルト値は true です。

警告

リモートチェックを無効にしないでください。システムが不安定になることがあります。
LoadBalancingFactory
接続ファクトリが使用するクライアント側の負荷分散ファクトリの実装を指定します。その値は、インターフェースの org.jboss.jms.client.plugin.LoadBalancingFactory を実装するクラス名に対応している必要があります。
デフォルト値は org.jboss.jms.client.plugin.RoundRobinLoadBalancingFactory であり、クラスター全体でラウンドロビン式に接続の負荷分散を行います。
Connector
接続ファクトリが使用するリモートコネクターを指定します。異なる接続ファクトリに違うコネクターを使用することができるため、HTTP トランスポートを使用してサーバーと通信を行う接続ファクトリと、bisocket トランスポートを使用して通信を行う別の接続ファクトリをデプロイすることができます。
EnableOrderingGroup
厳密なメッセージ順を ConnectionFactory で有効にするか指定します。true に設定すると、有効な接続ファクトリから作成されるプロデューサーが送信したメッセージはすべて順序グループのメッセージになります。このパラメーターのデフォルト値は false です。
DefaultOrderingGroupName
メッセージ順序グループのデフォルト名を指定します。その指定された名前は EnableOrderingGroup パラメーターが true に設定された時点で有効になります。この属性がない場合は、グループ名は自動的に生成されます。