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 数据库记录器,它位于应用程序服务器的标准输出日志中。

拒绝队列

产生每条消息错误的消息将移动到拒绝队列中。 在每条拒绝的消息上,将设置一个消息属性以指示拒绝该消息的原因。 有关查看拒绝队列中的内容、查看消息被拒绝的原因以及重新处理消息的信息,请参阅重新处理拒绝队列中的 MFT 消息

传输日志中的 Malformed 日志消息不是由记录器记录的。 这些消息不会视为重要消息,因此这些消息将发送到拒绝队列。 有关传输日志消息的更多信息,请参阅 文件传输日志消息格式