以下问题会影响群集代理。
本发行版中只支持完全连接的代理群集。这意味着群集中的每个代理均必须与群集中的其他所有代理直接通信。如果使用 imqbrokerd -cluster 命令行变量连接代理,请务必小心以确保包含了群集中的所有代理。
使用 HADB 的代理无法处理大于 10 MB 的消息。(错误 6531734)
如果客户端连接到高可用性代理,客户端运行时环境将尝试重新连接,直到成功时为止(无论将 imqAddressListIterations 设置为什么值)
与作为群集一部分的代理连接的客户端目前不能使用 QueueBrowser 来浏览位于该集群中远程代理上的队列。此客户端只能浏览位于直接连接的代理上的队列的内容。此客户端仍可以向任何队列发送消息,或使用来自集群中任何代理上的任何队列的消息,此限制只影响浏览。
在传统群集中,如果要将 4.1 代理和 3.x 代理放在一个群集中,必须为 4.1 代理设置属性 imq.autocreate.queue.maxNumActiveConsumers=1。否则,这些代理将无法建立群集连接。
在转换为高可用性群集时,可以使用 Message Queue 管理器实用程序 (imqdbmgr) 将现有的独立 HADB 持久性数据存储库转换为共享 HADB 存储库。这些命令如下所示。
imqdbmgr upgrade hastore
在下列情况下,您可以使用此实用程序。
从 4.0 独立 HADB 存储库移到 4.1 共享 HADB 存储库。在这种情况下,代理将自动升级存储库。可随后运行 imqdbmgr 命令,转换升级的数据存储库以进行共享使用。
从 4.1 独立 HADB 存储库移到共享 HADB 存储库。在这种情况下,您只需运行上面所示的 imqdbmgr 命令,转换数据存储库以进行共享使用。
由于此命令仅支持 HADB 存储库转换,因此,无法使用它将基于文件的存储库或其他 JDBC 存储库转换为共享 HADB 存储库。如果以前运行 3.x 版本的 Message Queue,则必须创建一个 HADB 存储库,然后手动将数据迁移到该存储库中以便使用高可用性功能。
如果 HADB 存储库存储的消息超过 10,000 个,则使用 imqdbmgr upgrade hastore 命令转换为 HADB 存储库的操作可能会失败,并显示“设置的锁定太多”消息。(错误号 6588856)。
(解决方法) 使用以下命令增加锁定数。
hadbm set NumberOfLocks=<desiredNumber>
有关其他信息,请参见 Sun Java System Application .Server 9.1 Enterprise Edition Troubleshooting Guide 中的 "HADB Problems"。
如果在一个事务中提交的远程消息超过 500 个,代理可能会返回错误“HADB-E-12815:表内存空间已用尽。”(错误号 6550483)
有关其他信息,请参见 Sun Java System Application .Server 9.1 Enterprise Edition Troubleshooting Guide 中的 "HADB Problems"。
在代理群集中,代理会对要传送到尚未启动的远程连接的消息进行排队(错误号 4951010)。
解决方法 一旦启动远程连接,这些消息将会由使用方接收。如果该使用方的连接关闭,这些消息将重新传送给另一个使用方。
如果在一个事务中使用多个来自远程代理的消息,则可能会在该代理中记录以下错误消息。该消息是无害的,可以将其忽略:
[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 属性与一个事务中的远程消息数相比较小,当通知将事务中的后续消息提交到消息主代理时,将会记录此消息。(错误 6585449)
解决方法 要避免出现此消息,请增加 imq.txn.reapLimit 属性的值。