次に示す問題は、ブローカクラスタに影響します。
MySQL Cluster データストアを使用する高可用性ブローカは、異常終了した場合、再起動に失敗します。(バグ 6896877)
回避方法: この問題は MySQL Cluster の既知の問題により発生します (http://bugs.mysql.com/bug.php?id=47955)。この問題に対する修正は、MySQL バージョン 5.1.39-ndb-6.3.28、5.1.39-ndb-7.0.9、および 5.1.39-ndb-7.1.0 に組み込まれています。
このリリースでは、フル接続のブローカクラスタのみサポートされています。つまり、クラスタ内のすべてのブローカは、そのクラスタ内のほかのブローカと相互に直接やり取りする必要があります。imqbrokerd -cluster コマンド行引数を使用してブローカを従来のクラスタに接続する場合は、そのクラスタ内のすべてのブローカが含まれていることを確認してください。
クライアントが拡張ブローカクラスタ内のブローカに接続されている場合、クライアントランタイムは、imqAddressListIterations 接続ファクトリ属性の値を無視して、成功するまで再接続を試みます。
クライアントが検索できるのは、ホームブローカにあるキューの内容のみです。この場合でも、クライアントは、クラスタ内の任意のブローカに対してキューにメッセージを送信したりキューからのメッセージを消費したりできます。制約を受けるのはキューの検索のみです。
Version 4.3 のブローカが含まれる従来のクラスタでは、すべてのクラスタが Version 3.5 以降でなければなりません。
デフォルトでは、メッセージキュー 4.3、4.2、および 4.1 のブローカを メッセージキュー 3.7 または 3.6 のブローカと同時に使用できません。これは、これらのバージョン間で imq.autocreate.queue.maxNumActiveConsumers のデフォルト値が変更されているためです。(バグ 6716400)
回避方法: すべてのブローカで imq.autocreate.queue.maxNumActiveConsumers の値を同じにします。通常は、メッセージキュー 4.3、4.2、および 4.1 の設定を変更して、3.7 または 3.6 のブローカで使用されている設定に一致させます (デフォルトでは、-1 の値を以前のバージョンのデフォルト値の 1 に変更します)。
Message Queue 4.3 (または 4.x) ブローカを Message Queue 3.x ブローカクラスタに追加するには、マスターブローカが動作している必要があります。(バグ 6763796)
従来のクラスタから拡張クラスタに変換するときに、メッセージキュー データベースマネージャーユーティリティー (imqdbmgr ) を使用して、既存のスタンドアロン JDBC ベースのデータストアから共有 JDBC データストアに変換できます。方法については、『Sun GlassFish Message Queue 4.4 Administration Guide』の「Cluster Conversion: JDBC-Based 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 プロパティーの値を増やします。