有关设置与消息大小关联的 MQ 属性和 MFT 属性的指导信息
您可以更改 IBM® MQ 属性和 Managed File Transfer 属性,以在读取或写入各种大小的消息时影响 Managed File Transfer 的行为。
如果从源队列读取或写入目标队列的消息大小超过 1048576 字节 (1 MB) ,那么必须将 Managed File Transfer Agent 属性 maxInputOutputMessageLength 的值增大到大于或等于要读取或写入的最大消息大小的值。
如果源队列上的消息大于 1048576 字节,您必须在源代理上设置 maxInputOutputMessageLength 属性。 如果目标队列上的消息大于 1048576 字节,您必须在目标代理上设置 maxInputOutputMessageLength 属性。 有关 maxInputOutputMessageLength 属性的更多信息,请参阅 Advanced agent properties: File to message and message to file agent。
如果代理写入或读取的队列是代理队列管理器的本地队列,那么您可能必须更改 IBM MQ 队列管理器,队列和通道 MAXMSGL 属性。
确保源或目标队列的最大消息大小的值大于或等于 maxInputOutputMessageLength 代理属性的值。
确保以下每个 IBM MQ 属性的值 (以字节为单位):- 代理队列管理器的最大消息大小
- SYSTEM.FTE.STATE.agent_name 队列的最大消息大小
- 客户机通道的最大消息大小(如果您的代理以客户机方式连接到队列管理器)
(3 * maxInputOutputMessageLength) + 1048576 的值
(该计算源于如下事实:三个检查点可以存储在状态消息中,并且每个检查点可能都必须缓冲,直至数据消息量的最大大小。)
如果代理要写入的队列是远程队列,那么您可能必须更改 IBM MQ 队列管理器,队列和通道 MAXMSGL 属性。
确保以下每个 IBM MQ 属性的值都大于或等于 maxInputOutputMessageLength 代理程序属性的值:- 代理队列管理器上远程队列管理器传输队列的最大消息大小
- 从代理队列管理器到远程队列管理器的通道的最大消息大小
- 远程队列管理器上目标队列的最大消息大小
- 远程队列管理器的最大消息大小
确保以下每个 IBM MQ 属性的值 (以字节为单位):- 代理队列管理器的最大消息大小
- SYSTEM.FTE.STATE.agent_name 队列的最大消息大小
- 客户机通道的最大消息大小(如果您的代理以客户机方式连接到队列管理器)
(3 * maxInputOutputMessageLength) + 1048576 的值
此计算派生自以下事实: 可以将三个检查点存储在状态消息中,并且每个检查点可能必须缓冲最大大小的消息数据量。
BFGUT0002E: An internal error has occurred. Product failure data was captured in file
"FFDC.FTE.20100928170828514.8172766022149157013.log".
BFGSS0025E: An internal error has occurred. The exception is: cc=2 rc=2010 op=put - MQPUT to SYSTEM.FTE.STATE.agent_name
BFGAG0061E: The agent ended abnormally 以下 IBM MQ 原因码可能包含在代理程序事件日志中的此消息中:rc=2010该原因码映射到 MQRC_DATA_LENGTH_ERROR,表明已超出客户机通道最大消息大小的值。 要解决此问题,请确保代理队列管理器的客户机通道最大消息大小大于或等于以下计算结果:3 * (maxInputOutputMessageLength) + 1048576rc=2030该原因码映射到 MQRC_MSG_TOO_BIG_FOR_Q,表明已超出 SYSTEM.FTE.STATE.agent_name 队列的最大消息大小值。 要解决此问题,请确保 SYSTEM.FTE.STATE.agent_name 队列的最大消息大小大于或等于以下计算结果:3 * (maxInputOutputMessageLength) + 1048576rc=2031该原因码映射到 MQRC_MSG_TOO_BIG_FOR_Q_MGR,表明已超出代理队列管理器的最大消息大小的值。 要解决此问题,请确保代理队列管理器的最大消息大小大于或等于以下计算结果:3 * (maxInputOutputMessageLength) + 1048576
如果要传输许多小的消息
如果代理从队列读取或写入队列的消息的平均大小低于 1310 字节,且代理读取或写入了超过 10000 条消息,那么您必须增加队列管理器上未落实消息属性的最大数量,或减少检查点时间间隔中的数据量。
Checkpoint interval data size (in bytes) = agentCheckpointInterval * agentFrameSize *
agentWindowSize * agentChunkSize.缺省检查点数据大小为 1 * 5 * 10 * 262144 字节 = 13107200 字节 (12.5MB)。 队列管理器支持的事务中未落实消息的最大数目由 MaxUncommittedMsgs 队列管理器属性控制。 此属性的缺省值为 10000 条消息。 如果平均消息大小小于约 1310 字节,且要写入的消息数超过 10000 条,那么将超出未落实消息的缺省最大数。BFGSS0024E: The agent has received a reason code of '2024' from the message queue interface (MQI).
The agent cannot continue processing and will now end.
BFGAG0139I: The agent has suspended its current transfers and is now stopping.
原因码 2024 映射到:MQRC_SYNCPOINT_LIMIT_REACHED。- 增加读写队列的代理连接到的队列管理器的 MaxUncommittedMsgs 队列管理器属性的值。 请参见MaxUncommittedMsgs(MQLONG)。
- 减少检查点时间间隔中的数据量。 要执行此操作,请减少以下一个或多个代理属性的值:
- agentCheckpointInterval
- agentFrameSize
- agentWindowSize
- agentChunkSize
如果将消息持久写入队列
如果要传输到队列并将消息持久写入队列,那么可能需要增加队列管理器日志文件空间的大小,以便能够记录检查点时间间隔中的所有数据。
BFGSS0024E: The agent has received a reason code of '2102' from the message queue interface (MQI).
The agent cannot continue processing and will now end.
BFGAG0062E: The agent has received MQI reason code '2102'. The agent cannot continue processing and will now end.
BFGAG0061E: The agent ended abnormally
原因码“2102”映射到:MQRC_RESOURCE_PROBLEM。要解决此问题,请增加目标代理队列管理器日志文件空间的大小。