以下问题将影响 Message Queue 代理。
如果持久性数据存储库打开过多目的地,将无法访问代理。(错误 4953354)
解决方法:这种情况是由于代理达到了系统打开文件描述符限制所致。在 Solaris 和 Linux 上可使用 ulimit 命令来增加文件描述符限制。
目的地被销毁后,使用方将被孤立。(错误 5060787)
目的地被销毁后,活动的使用方将被孤立。使用方孤立后,他们将不再接收消息(即使重新创建了目的地)。
使用 HTTP 连接服务的 JMS 客户端突然终止时(例如,使用 Ctrl-C 组合键),代理要花费大约一分钟的时间才能释放客户端连接和所有关联的资源。
如果在这一分钟内客户端的另一个实例启动,并且该实例尝试使用同一个客户端 ID、长期订阅或队列,则可能会收到“客户端 ID 已经在使用”的异常。这实际上不是什么问题,只是上述终止过程的副作用。如果客户端在延迟约一分钟后启动,则应当一切正常。
将 MySQL 数据库用作数据存储库时,如果存储的消息超过 1 MB,则会抛出以下 SQL 异常:“查询数据包太大...”。(错误 6682815)
解决方法:启动 MySQL 服务器并将 --max_allowed_packet 选项的值设置为大于 1 MB(默认值)。例如,使用以下值:
--max_allowed_packet=60M
如果将 Java DB 数据库用作数据存储库,则会在存储消息时抛出以下 SQL 异常:“无法在请求的时间内获取锁定”。(错误 6691394)
解决方法:在代理的 config.properties 文件中添加以下属性值:
imq.persist.jdbc.derby.table.MYCONSTATE41.index.IDX2=CREATE INDEX &(index) ON $(name) (MESSAAGE_ID)
将 MySQL 数据库用作高可用性共享数据存储库时,需要使用一种机制将 MySQL 存储引擎配置为 NDBCLUSTER。(错误 6691394)
解决方法:在代理的 config.properties 文件中添加以下属性值:
imq.persist.jdbc.mysql.tableoption=EMGINE=NDBCLUSTER