以下问题影响代理群集。
本发行版中只支持完全连接的代理群集。这意味着群集中的每个代理均必须与群集中的其他所有代理直接通信。如果使用 imqbrokerd -cluster 命令行参数将代理连接到传统群集,请务必小心以确保包含了群集中的所有代理。
如果将客户端连接到增强的代理群集中的代理,客户端运行时环境将尝试重新连接,直至成功为止(它忽略 imqAddressListIterations 连接工厂属性的值)。
客户端只能浏览位于其主代理上的队列内容。此客户端仍可以向任何队列发送消息,或使用来自群集中任何队列的消息,此限制只影响队列浏览。
在包含 4.3 版代理的传统群集中,所有代理必须为 3.5 或更高版本。
默认情况下,群集中的 Message Queue 4.3、4.2 和 4.1 代理无法与 Message Queue 3.7 或 3.6 代理进行互操作,因为这些版本的 imq.autocreate.queue.maxNumActiveConsumers 默认值并不相同。(错误 6716400)
解决方法:更改 imq.autocreate.queue.maxNumActiveConsumers 的值以确保所有代理具有相同的值,这通常是通过更改 Message Queue 4.3、4.2 和 4.1 配置以与 3.7 或 3.6 代理所使用的配置相匹配来实现的(默认情况下,从值 -1 更改为以前版本的默认值 1)。
要将 Message Queue 4.3(或 4.x)代理添加到 Message Queue 3.x 代理群集中,必须运行主代理。(错误 6763796)
在从传统群集转换为增强的群集时,可以按照《Sun GlassFish Message Queue 4.4 Administration Guide》中的“Cluster Conversion: JDBC-Based Data Store”所述,使用 Message Queue 数据库管理器实用程序 (imqdbmgr) 将现有的基于 JDBC 的独立数据存储库转换为共享 JDBC 数据存储库。
使用 HADB 的代理无法处理大于 10 MB 的消息。(错误 6531734)
如果 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: Table memory space exhausted"(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 属性的值。