可执行一组检查以调查通过远程消息点来传递消息时,点到点消息未到达服务集成总线上的目标的原因。
关于此任务
应该将此任务作为调查点到点消息未到达的原因的一部分来执行。此任务说明如何调查通过远程消息点来传递消息的点到点消息传递方案中的消息流。在下图中,总线包含 3 个消息传递引擎:ME1、ME2 和 ME3。生产应用程序与 ME1 相连,消费应用程序与 ME3 相连。消息在 ME1 中生成,通过 ME2 从 ME1 路由至 ME3。此方案仅与 ME1 和 ME2 有关。ME1
托管远程消息点,该消息点表示由 ME2 托管的消息点。ME1 是生产应用程序连接至的消息传递引擎,而 ME2 是用来托管队列点的消息传递引擎。
下列步骤中将涉及到这些消息传递引擎。
图 1. 使用远程消息点产生点到点消息
过程
- 通过单击 显示 ME1 的属性。
- 在 ME1 的运行时选项卡上,单击 [远程消息点] 远程队列点,然后单击用来表示
ME2 上的队列点的远程队列点。查看当前出站消息字段的值。
- 如果当前出站消息数大于零,那么表示已经生成了消息,但是 ME2 可能尚未接收到这些消息。
- 检查这两个消息传递引擎之间是否能够互相通信,请参阅服务集成故障诊断:检查总线中的两个消息传递引擎之间的通信。
- 查找队列上先前的消息。如果存在先前的消息,并且某些消息或所有消息都是用于
ME2 的,那么应等待一会儿然后刷新该视图。
- 检查测试消息的状态:
- 如果测试消息的状态为“暂挂发送”,那么表示消息正在等待进行发送。ME2 可能未接受消息。请完成以下检查:
- 检查这两个消息传递引擎之间是否能够互相通信,请参阅服务集成故障诊断:检查总线中的两个消息传递引擎之间的通信。
- 检查 ME2 上的队列点是否未满:显示队列点的运行时属性,并将当前消息深度与消息阈值上限进行比较。如果当前消息深度等于消息阈值上限,那么在使用已排队的消息之前,消息传递引擎将不会接受新消息。可以选择重新启动使用者并一直等到清除了积压情况为止,也可以选择删除消息。
注: 一旦您删除了消息,就不能再恢复它们。
- 检查是否已经传播了配置更改。通过将最新的配置设置部署到 ME2 的应用程序服务器来确保 ME2 知道队列点的存在。
- 如果测试消息的状态为“暂挂确认”,那么表示已经发送了消息,但是 ME2 可能尚未接收到该消息或者未处理该消息。检查传输队列中没有任何“正在落实”状态的消息排在测试消息之前,然后等待一会儿并再次检查队列点,以便了解测试消息是否已经到达。如果有消息是在“正在落实”状态下捕获的,那么通过参考以下内容来解决此问题。
- 如果测试消息(或者另一条消息)处于“正在落实”状态,那么消息包含在未解析的事务中。资源管理器(例如,数据库)可能已被挂起。使用该资源管理器解决此问题。如果此操作失败,那么记录消息的事务标识,
然后单击以显示事务服务的常规属性。使用查看链接来解析其全局标识与消息的事务标识相匹配的事务。
- 如果已完成的出站消息数大于零,那么表示已经生成了消息并且 ME2 已处理该消息,但是测试消息尚未出现。重新运行生产应用程序,并确保 ME1 上已完成的出站消息数增大(在已完成的出站消息计数增大之前,您可能会发现活动出站消息计数增大)。
- 如果这些计数都未增大,那么表示在 ME1 中尚未生成消息。检查生产应用程序是否已连接至此消息传递引擎(请参阅确定应用程序与哪个消息传递引擎相连)。
- 如果这些计数增大了,那么表示消息已到达 ME2,但是该消息已使用,或已发送至异常目标,或者已到期。检查使用者是否存在,并再次执行初步检查。
- 如果当前消息数和已完成的消息数都为零,那么通过再次执行相关的初步检查来检查生产应用程序是否正将消息生成到此目标中。
下一步做什么
如果仍然存在问题,那么请您与 IBM 客户服务代表联系。