- 自消息流最近一次成功运行以来您是否对消息流做过任何更改?
如果做过,则错误可能位于消息流的新的或修改过的部分。检查更改,并查看您是否可以发现问题的明显原因。
- 您之前是否使用过消息流的所有功能?
问题是否是在调用从前没有调用过的消息流部分时发生的?如果是这样,则错误可能位于该部分中。通过以下方法尝试找出消息流失败时它在执行什么操作:使用用户跟踪、跟踪节点和工作台的调试器功能。
如果您在以前的很多次成功运行了消息流,检查错误发生时的当前队列状态和正在处理的文件。它们可能包含一些不平常的数据值,这些值可能在消息流中会调用不常用的路径。
- 消息流检查所有的返回吗?
是否是您的系统已更改(可能只作了细微更改),但您的消息流没有检查作为更改结果而接收到的返回码?例如:
- 您的消息流是否假设它访问的队列是可以共享的?如果队列重新定义为互斥的,您的消息流是否能处理表明它不再访问该队列的返回码?
- 是否更改了任何安全概要文件?消息流可能因为安全性冲突而失败。
- 消息流是否期待特定的消息格式?
如果带意外消息格式的消息放入了队列(例如,来自不同操作系统的队列管理器的消息),可能需要进行数据转换或不同形式的处理。另外,还检查您是否更改了所使用的任何消息格式。
- 消息流在其他 WebSphere Message Broker 系统上运行?
是不是由于设置系统的方法不同而引起此问题?例如,是否定义队列具有相同的最大消息长度或优先级?使用的数据库或它们的设置中是否有不同?
- 您是否使用了任何用户定义的扩展?
可能有可装入实现库(LIL)文件的转换或编译问题。在您查看代码之前,先检查来自转换程序、编译器或汇编程序和链接编辑器的输出,以了解是否报告了任何错误。修正任何错误使用户定义的扩展能够正常工作。
如果文档显示这些步骤每步都完成且没有错误,则考虑消息流、消息集或用户定义的扩展的编码逻辑。问题症状表明由于哪个函数失败,因此哪个代码段有错误吗?
请参阅用户定义的扩展,以获取更多信息。
- 您能看到WebSphere Message Broker或外部资源(如数据库)的错误吗?
由于在内置节点上不正确地使用了故障终端,因此消息流可能丢失了错误。如果您使用故障终端,则要确保能够适当地处理错误。请参阅处理消息流中的错误,获取更多有关故障终端的信息。