次に示す問題は、ブローカクラスタに影響します。
このリリースでは、フル接続のブローカクラスタのみサポートされています。つまり、クラスタ内のすべてのブローカは、そのクラスタ内のほかのブローカと相互に直接やり取りする必要があります。imqbrokerd -cluster コマンド行引数を使用してブローカを従来のクラスタに接続する場合は、そのクラスタ内のすべてのブローカが含まれていることを確認してください。
クライアントが高可用性ブローカクラスタ内のブローカに接続されている場合、クライアントランタイムは、imqAddressListIterations 接続ファクトリ属性の値を無視して、成功するまで再接続を試みます。
クライアントが検索できるのは、ホームブローカにあるキューの内容のみです。この場合でも、クライアントは、クラスタ内の任意のブローカに対してキューにメッセージを送信したりキューからのメッセージを消費したりできます。制約を受けるのはキューの検索のみです。
Version 4.2 のブローカが含まれる従来のクラスタでは、すべてのクラスタが Version 3.5 以降でなければなりません。
デフォルトでは、Message Queue 4.2 および 4.1 のブローカを Message Queue 3.7 または 3.6 のブローカと同時に使用できません。これは、これらのバージョン間で imq.autocreate.queue.maxNumActiveConsumers のデフォルト値が変更されているためです。(バグ 6716400)
回避方法: Message Queue 4.2 および 4.1 のブローカの imq.autocreate.queue.maxNumActiveConsumers の値を、デフォルト値の -1 から以前のバージョンのデフォルト値である 1 に変更します。
従来のクラスタから高可用性クラスタに変換するときに、Message Queue データベースマネージャーユーティリティー (imqdbmgr ) を使用して、既存のスタンドアロン JDBC ベースデータストアから高可用性共有データストアに変換できます。方法については、『Sun Java System Message Queue 4.2 Administration Guide』の「Converting a Standalone Data Store to a Shared Data Store」を参照してください。
HADB を使用するブローカは、10M バイトより大きなメッセージを処理できません。(バグ 6531734)
コマンド imqdbmgr upgrade hastore を使用した HADB ストアへの変換は、ストアに 10,000 を超えるメッセージが保持されている場合、「設定されているロックの数が多すぎます」というメッセージが表示されて失敗することがあります。(バグ 6588856)
回避方法: 次のコマンドを使用して、ロックの数を増やします。
hadbm set NumberOfLocks=<desiredNumber>
詳細は、『Sun Java System Application Server 9.1 Enterprise Edition トラブルシューティングガイド』の「HADB の問題」を参照してください。
1 つのトランザクションに 500 を超えるリモートメッセージがコミットされている場合、ブローカはエラー「HADB-E-12815: Table memory space exhausted」を返すことがあります。(バグ 6550483)
詳細は、『Sun Java System Application Server 9.1 Enterprise Edition トラブルシューティングガイド』の「HADB の問題」を参照してください。
ブローカクラスタで、開始していないリモート接続へのメッセージをブローカがキューに入れます。(バグ 4951010)
回避方法: いったんその接続が開始すると、メッセージはコンシューマによって受信されます。コンシューマの接続が閉じている場合、メッセージは別のコンシューマへ再配信されます。
1 つのトランザクションでリモートブローカから複数のメッセージを消費しているときは、次のエラーメッセージがブローカに記録される可能性があります。このメッセージは無視しても問題ありません。
[26/Jul/2007:13:18:27 PDT] WARNING [B2117]: Message acknowledgement failed from mq://129.145.130.95:7677/?instName=a&brokerSessionUID=3209681167602264320: ackStatus = NOT_FOUND(404)\ Reason = Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed. AckType = MSG_CONSUMED MessageBrokerSession = 3209681167602264320 TransactionID = 3534784765719091968 SysMessageID = 8-129.145.130.95(95:fd:93:91:ec:a0)-33220-1185481094690 ConsumerUID = 3534784765719133952\par [26/Jul/2007:13:18:27 PDT] WARNING Notify commit transaction [8-129.145.130.95(95:fd:93:91:ec:a0)-33220-1185481094690, [consumer:3534784765719133952, type=NONE]] TUID=3534784765719091968 got response: com.sun.messaging.jmq.jmsserver.util.BrokerException: Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed.: com.sun.messaging.jmq.jmsserver.util.BrokerException: Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed.r
このメッセージは、imq.txn.reapLimit プロパティーが 1 つのトランザクション内のリモートメッセージの数と比較して少ない場合に、トランザクション内の後のメッセージのためにコミットをメッセージホームブローカに通知するときに記録されます。(バグ 6585449)
回避方法: このメッセージを回避するには、imq.txn.reapLimit プロパティーの値を増やします。