MFT 记录器错误处理和拒绝
Managed File Transfer 记录器标识两种类型的错误: 每条消息错误和一般错误。
- 某条消息中缺少结果代码(必需的数据项)
- 某个传输中指定了长度为 3000 个字符且对于关联数据库列过大的作业名
- 接收到有关传输的进度消息,但并没有记录表明传输已启动(可能是因为错误路由或延迟了“传输启动”消息)
- 接收到消息,这不是 Managed File Transfer 日志消息
通用错误是每条消息错误之外的所有错误。 这些错误的原因可能是配置问题或程序错误。
遇到每条消息的错误时,记录器会将该消息放到拒绝队列上以拒绝该消息。 不会向输出日志写入任何内容,因此需要定期检查或持续监视拒绝队列以检测拒绝的消息。
如果连续拒绝了过多消息,而没有任何消息成功写入数据库,那么这种情况将视为通用错误。 例如,考虑这样一个站点,它始终使用 10 字符代码作为作业名,但无意间将作业名列重新配置为两个字符宽。 尽管过宽的数据通常为每条消息错误,但在此情况下,配置问题是通用的,因此将检测为通用错误。 您可以使用 wmqfte.max.consecutive.reject 属性调整导致常规错误所需的连续每个消息错误数。
如果检测到通用错误,记录器将回滚尚未提交到队列管理器的任何消息,然后定期重试。 如果记录器是使用 -F 参数以前台方式启动的,那么会将标识问题的消息写入输出日志和控制台。
记录器的输出日志的位置取决于它是独立数据库记录器还是 JEE 数据库记录器。 对于独立数据库记录器,它位于 MQ_DATA_PATH/mqft/logs/coordination_qmgr_name/loggers/logger_name 目录中。 对于 JEE 数据库记录器,它位于应用程序服务器的标准输出日志中。
拒绝队列
产生每条消息错误的消息将移动到拒绝队列中。 在每条拒绝的消息上,将设置一个消息属性以指示拒绝该消息的原因。 该属性的全名是 usr.WMQFTE_ReasonForRejection,尽管是 usr。 在某些上下文中省略(包括 JMS 和 IBM® MQ Explorer)。
如果您正在使用 IBM MQ Explorer,那么可以通过右键单击拒绝队列并单击 浏览消息来查看该队列的内容。 要查看拒绝消息的原因,请双击该消息以打开其属性对话框,然后选择“已命名属性”页面。 您将看到名为 WMQFTE_ReasonForRejection 的属性。 或者,您也可以编写或配置监视工具以自动获取此信息。
有时,您可能希望重新处理拒绝队列中的消息。 在本主题先前描述的示例中,对于数据库中的两字符作业名列,在数据库列宽度增加后可以成功处理这些消息。 作为另一示例,如果“传输完成”消息由于缺少关联的“传输启动”而被拒绝,可能会在以后接收到“传输启动”消息。 这样,重新处理“传输完成”将会成功。
DISPLAY SUB(SYSTEM.FTE.DATABASELogger.AUTO) DEST在队列间移动报文的一种方法是使用MA01SupportPac 等: q -IFTE.REJECT -oSYSTEM.MANAGED.DURABLE.49998CFF20006204 拒绝队列可能包含由于各种原因而被拒绝的消息,其中仅有一部分得以解决。 在此情况下,您仍可以重新处理所有消息;现在可接受的消息将被使用,而不能接受的消息则再次移动到拒绝队列。传输日志中的 Malformed 日志消息不是由记录器记录的。 这些消息不会视为重要消息,因此这些消息将发送到拒绝队列。 有关传输日志消息的更多信息,请参阅 文件传输日志消息格式。