次に示す問題は メッセージキュー ブローカに影響します。
メッセージキュー 4.4 クライアントは、メッセージキュー 3.7 ブローカに接続するときに不明瞭な警告を受信します。(バグ 6899886)
メッセージキュー 4.4 クライアントが メッセージキュー 3.7 ブローカに接続するときに、クライアントは次の形式の警告を受信します。
WARNING [I500]: Caught JVM exception: ... [C4036]: A broker error occurred. :[505] bad version ...
この「正しくないバージョン」の警告は、プロトコルレベルを下げてクライアントをブローカに再接続すべきであることを示しています。
JDBC データストアを使用する場合、データベースのパスワードが平文で保存されます。(バグ 6691717)
回避方法: 『Sun GlassFish Message Queue 4.4 Administration Guide』の「Password Files」で説明しているように、データベースのパスワードを含むパスワードファイルをセキュリティー保護します。
持続データストアがあまりにも多くの送信先を開く場合、ブローカがアクセス不可能になります。(バグ 4953354)
回避方法: この状態はブローカがシステムのオープンファイル記述子の制限に達したことが原因です。Solaris や Linux では、ulimit コマンドを使って、ファイル記述子の制限を増やします。
送信先が破棄された場合、コンシューマが孤立します。(バグ 5060787)
送信先が破棄された場合、アクティブコンシューマが孤立します。いったんコンシューマが孤立すると、送信先が再作成された場合でもメッセージを受信しなくなります。
HTTP 接続サービスを使用している JMS クライアントが、Ctrl-C の使用などにより突然終了した場合、ブローカがクライアント接続や関連するすべてのリソースを解放するまでに、およそ 1 分かかります。
この 1 分の間にクライアントのほかのインスタンスが起動し、同じ ClientID、永続サブスクリプション、またはキューを使おうとした場合、そのインスタンスは「クライアント ID はすでに使用されています」の例外を受け取ります。このことは実際の問題ではなく、上記の終了処理の結果にすぎません。およそ 1 分経過後にクライアントが起動すると、すべて問題なく動作します。
データストアに MySQL データベースを使用している場合、1M バイトを超えるメッセージを格納すると、「クエリーのパケットが大きすぎます...」という SQLException がスローされます。(バグ 6682815)
回避方法:--max_allowed_packet オプションでデフォルトの 1M バイトより大きい値を設定して MySQL サーバーを起動します。たとえば、次の値を使用します。
--max_allowed_packet=60M
高可用性共有データストアに MySQL データベースを使用している場合、MySQL ストレージエンジンを NDBCLUSTER として設定する機構が必要です。(バグ 6691394)
回避方法: ブローカの config.properties ファイルに、次のプロパティー値を追加します (『Sun GlassFish Message Queue 4.4 Administration Guide』の「Enhanced Clusters: JDBC Configuration Properties 」を参照)。
imq.persist.jdbc.mysql.tableoption=EMGINE=NDBCLUSTER
Oracle の 9i (JDBC 9.2.0.x) ドライバを使用する場合、ブローカが「Failed to persist property...」という例外をスローします。(バグ 6626825)
回避方法: Oracle の 10g (JDBC 10.2.0.x) ドライバを使用します。ブローカはこのドライバに対して最適化されます。
imq.persist.jdbc.derby.table.MYCONSTATE41.index.IDX2=CREATE INDEX &(index) ON $(name) (MESSAAGE_ID)
データストアに Java DB データベースを使用している場合、メッセージを格納すると、「要求された時間内に例外を取得できませんでした」という SQLException がスローされます。(バグ 6691394)
回避方法: ブローカの config.properties ファイルに次のプロパティー値を設定します。
imq.persist.jdbc.derby.table.MYCONSTATE41.index.IDX2=CREATE INDEX &(index) ON $(name) (MESSAAGE_ID)
AIX で IBM JVM を使用しているときに、明白な理由なく、ブローカが低メモリーまたはメモリー不足の状態に陥ります。(バグ 6899526)
回避方法: IBM JVM の最新のバージョン (Java Runtime 1.6.0 IBM Corporation 以降) を使用して、imqbrokerd に次の IBM JVM GC オプションを渡します。
# imqbrokerd -vmargs -Xgcpolicy:gencon |