通道发送出口程序 - 保留空间
传输之前,您可以使用发送和接收出口转换数据。 通过在传输缓冲区内保留空间,通道发送出口程序可以添加自己的有关转换的数据。
此数据由接收出口程序处理,然后从缓冲区中移除。 例如,您可能希望对数据进行加密并添加用于解密的安全密钥。
如何保留和使用空间
为初始化调用发送出口程序时,请将 MQXCP 的 ExitSpace 字段设置为要保留的字节数。 请参阅 MQCXP 以获取详细信息。 ExitSpace 只能在初始化期间设置,即 ExitReason 的值为 MQXR_INIT 时。 紧接着传输之前调用发送出口时,ExitReason 设置为 MQXR_XMIT,将在传输缓冲区中保留 ExitSpace 个字节。 ExitSpace 在 z/OS®上不受支持。
发送出口不需要使用所有保留空间。 该出口使用的空间可以少于 ExitSpace 字节,或者如果传输缓冲区未满,该出口使用的空间可以大于保留量。 在设置 ExitSpace 的值时,您必须至少为传输缓冲区中的消息数据保留 1KB。 如果保留空间用于大量数据,通道性能可能会受到影响。
传输缓冲区通常为 32KB 长。 但是,如果通道使用 SSL 或 TLS,那么传输缓冲区大小将减少到 15,352 字节以适应 RFC 6101 定义的最大记录长度和一系列相关的 TLS 标准。 另外保留 1024 字节供 IBM® MQ使用,因此发送出口可用的最大传输缓冲区空间为 14,328 字节。
通道接收端会发生什么
必须对通道接收出口程序进行设置以与对应的发送出口兼容。 接收出口必须知道保留空间中的字节数并且必须移除该空间内的数据。
多个发送出口
您可以指定一列要连续运行的发送和接收出口程序。 IBM MQ 为所有发送出口保留的空间保留总计。 此空间总量必须至少为传输缓冲区中的消息数据保留 1 KB。
- 为初始化调用时:
- 发送出口 A 保留 1 KB。
- 发送出口 B 保留 2 KB。
- 发送出口 C 保留 3 KB。
- 最大传输大小为 32 KB,用户数据长度为 5 KB。
- 使用 5 KB 的数据调用出口 A;最多有 27 KB 的可用空间,因为要为出口 B 和 C 保留 5 KB 的空间。 出口 A 添加 1 KB 的空间(其保留的空间)。
- 使用 6 KB 的数据调用出口 B;最多有 29 KB 的可用空间,因为要为出口 C 保留 3 KB 的空间。 出口 B 添加 1 KB 的空间(小于其保留的 2 KB 空间) 。
- 调用出口 C 使用 7 KB 数据;最多有 32 KB 可用。 出口 C 占用 10K,大于其保留的 3 KB。 此数量有效,因为数据总量 17 KB 小于 32 KB 最大值。
使用 SSL 或 TLS 的通道的最大传输缓冲区大小为 15,352 字节,而不是 32Kb。 这是因为底层安全套接字传输段限制为 16Kb,而其中某些空间必须用于 SSL 和 TLS 记录开销。 另外保留 1024 字节供 IBM MQ使用,因此发送出口可用的最大传输缓冲区空间为 14,328 字节。