调查队列已满的原因
如果您在队列已满的情况下仍然尝试将消息生成至该队列,那么会返回异常。尽管队列已满的原因可能是通信链路已断开或者消费应用程序发生了错误,但是最可能的原因是生产应用程序生成消息的速度比消费应用程序使用这些消息的速度更快。
关于此任务
过程
- 单击 服务集成 -> 总线 -> bus_name -> [目标资源] 目标,然后单击已满的队列的名称。
- 单击 [相关项] 应用程序资源拓扑,然后使用此目标的应用程序资源面板来检查将使用该目标的应用程序和 JMS 资源的配置。
此面板可通过给出许多相关资源的高级视图来帮助您找到问题的原因。
- 单击服务集成 -> 总线 -> bus_name -> [目标资源] 目标 -> queue_name -> [消息点] 队列点 -> queue_point_name,然后单击运行时选项卡以查看当前消息深度的值。如果此值不断增大,那么表示生产应用程序生成消息的速度超过了使用者使用消息的速度。 注: 如果一个目标具有多个队列点或者该目标已调解,那么对消息可能已发送至或者从中使用消息的每个消息点执行下列检查。
- 确定生产应用程序和消费应用程序连接至的消息传递引擎。
- 如果生产应用程序和消费应用程序连接至不同的消息传递引擎,那么会通过远程队列点来传递消息。在生产者的消息传递引擎上,单击远程队列点,然后单击用来表示使用者队列点的队列点。查看当前的出站消息数。如果当前的消息数较少,那么说明问题与远程队列点无关;检查消费应用程序是否已启动并且正在使用消息而没有产生错误。如果当前消息数已接近消息阈值上限,请执行下列检查:
- 检查这两个消息传递引擎之间是否能够互相通信,请参阅服务集成故障诊断:检查总线中的两个消息传递引擎之间的通信。如果消息传递引擎可以进行通信,那么降低生成消息的速度。如果消息传递引擎无法进行通信,那么应解决该故障。如果一旦恢复了通信之后在处理积压的消息时就遇到了问题,而积压的消息不包含任何重要消息,那么可以考虑删除远程消息点上的所有消息。要删除这些消息,应选择相关的远程消息点,并单击删除所有消息。注: 一旦您删除了消息,就不能再恢复它们。
- 检查消息是否不是在“正在落实”状态下捕获到的。如果是这种情况,那么资源管理器(例如,数据库)已挂起。使用该资源管理器解决此问题。如果此操作失败,那么记录消息的事务标识, 然后单击服务器 -> 服务器类型 -> WebSphere 应用程序服务器 -> server_name -> 运行时 > [其他属性] 事务服务以显示事务服务的常规属性(包括事务数)。使用查看链接来解析其全局标识与消息的事务标识相匹配的事务。
- 检查这两个消息传递引擎之间是否能够互相通信,请参阅服务集成故障诊断:检查总线中的两个消息传递引擎之间的通信。如果消息传递引擎可以进行通信,那么降低生成消息的速度。如果消息传递引擎无法进行通信,那么应解决该故障。如果一旦恢复了通信之后在处理积压的消息时就遇到了问题,而积压的消息不包含任何重要消息,那么可以考虑删除远程消息点上的所有消息。要删除这些消息,应选择相关的远程消息点,并单击删除所有消息。
子主题
确定应用程序与哪个消息传递引擎相连
如果应用程序未能接收或生成消息,您可能就会想了解该应用程序与哪个消息传递引擎相连,并将此步骤作为对问题进行故障诊断的一部分。服务集成故障诊断:检查总线中的两个消息传递引擎之间的通信
如果您正在对服务集成系统中存在的问题进行故障诊断,您就可能想检查两个消息传递引擎之间是否可以互相通信。
相关信息:


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tju_queue_full
文件名:tju_queue_full.html