5.10. 接続ファクトリの設定
JBoss Messaging はデフォルトでは起動時に JNDI 内で 2 つの接続ファクトリをバインドするように設定されています。
1 つ目の接続ファクトリはデフォルトの非クラスター化した接続ファクトリです。この接続ファクトリにより元々 JBossMQ に対して書き込みされたアプリケーションとの互換性を維持することができ、自動フェールオーバーまたは負荷分散は含まれていません。クライアント側の自動フェールオーバーまたは負荷分散が必要でない場合は、この 1 つ目の接続ファクトリを使用してください。
1 つ目の接続ファクトリは以下の JNDI コンテキストにバインドされています。
/ConnectionFactory/XAConnectionFactoryjava:/ConnectionFactoryjava:/XAConnectionFactory.
2 つ目の接続ファクトリはデフォルトのクラスター化した接続ファクトリで、以下の JNDI コンテキストにバインドされています。
/ClusteredConnectionFactory/ClusteredXAConnectionFactoryjava:/ClusteredConnectionFactoryjava:/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 つの場所にバインドされます。
例では以下のデフォルト値を無効にします。
PreFetchSizeDefaultTempQueueFullSizeDefaultTempQueuePageSizeDefaultTempQueueDownCacheSizeDupsOKBatchSizeSupportsFailoverSupportsLoadBalancingLoadBalancingFactory
この接続ファクトリは、デフォルトのリモートコネクターを使用します。その接続ファクトリを持つ別のリモートコネクターを使用するには、
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に設定することは、PrefetchSizeを1に設定することと同等であり、これは使用できる最小値です。 - 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 動作で接続の例外を検出することがユーザーコードの役目です。JMSExceptionListenerをインストールして、非同期に例外を検出する必要があります。例外が検出されると、クライアント側のコードは HAJNDI を介して新しい接続ファクトリを検索し、接続を再作成する必要があります。 - DisableRemotingChecks
- 接続ファクトリが対応する JBoss Remoting Connector が適切な値を使用していることを確認するかどうか設定します。JBoss Messaging はこうした値に非常に精度の高い確認を行うため、変更する必要はほとんどありません。このサニティチェックを無効にするには、
DisableRemotingChecksをfalseに設定します。デフォルト値はtrueです。警告
リモートチェックを無効にしないでください。システムが不安定になることがあります。 - LoadBalancingFactory
- 接続ファクトリが使用するクライアント側の負荷分散ファクトリの実装を指定します。その値は、インターフェースの
org.jboss.jms.client.plugin.LoadBalancingFactoryを実装するクラス名に対応している必要があります。デフォルト値はorg.jboss.jms.client.plugin.RoundRobinLoadBalancingFactoryであり、クラスター全体でラウンドロビン式に接続の負荷分散を行います。 - Connector
- 接続ファクトリが使用するリモートコネクターを指定します。異なる接続ファクトリに違うコネクターを使用することができるため、HTTP トランスポートを使用してサーバーと通信を行う接続ファクトリと、bisocket トランスポートを使用して通信を行う別の接続ファクトリをデプロイすることができます。
- EnableOrderingGroup
- 厳密なメッセージ順を
ConnectionFactoryで有効にするか指定します。trueに設定すると、有効な接続ファクトリから作成されるプロデューサーが送信したメッセージはすべて順序グループのメッセージになります。このパラメーターのデフォルト値はfalseです。 - DefaultOrderingGroupName
- メッセージ順序グループのデフォルト名を指定します。その指定された名前は
EnableOrderingGroupパラメーターがtrueに設定された時点で有効になります。この属性がない場合は、グループ名は自動的に生成されます。