linux - 在 Linux 中使用 WebSphere MQ 的默认 CCSID 连接到 Windows 中的客户端应用程序

标签 linux windows ibm-mq data-conversion

我有两个应用程序 A 和 B。应用程序 A 将消息放入 QMA,这是一个默认 CCSID 为 1208 的 Linux 队列管理器。QMA 将消息发送到 QMB,这是一个默认 CCSID 为 437 的 Windows 队列管理器。应用程序 B 使用来自QMB。一切都好。 然后我将 Windows 队列管理器 QMB 迁移到 Linux 平台并将 CCSID 更改为默认值 1208。App B 开始出现与数据相关的问题。然后我将 Linux 平台中的 QMB 使用 CCSID 更改为 437,之后 App B 没有发现任何数据问题。

我是一名 MQ 管理员,不太了解在 MQ 服务器中未启用数据转换属性时,在 MQ 服务器中定义的 CCSID 对客户端应用程序的真正重要性。

我的理解是队列管理器 CCSID 应该是基于所用平台的默认值,并且永远不需要更改。帮助我更好地理解?

最佳答案

您是正确的,在 MQ 服务器上定义的 CCSID 对应用程序(无论是客户端还是其他)应该无关紧要。这是因为应用程序应该做的是使用 MQGMO_CONVERT 在 MQGET 上请求其消息。

这听起来更像是您设置中的应用程序依赖于消息的代码页是否正确以及它们需要从推杆获得什么,并且它们没有使用 MQGMO_CONVERT。

MQGMO_CONVERT 应始终用于应用程序,即使最初不需要它,因为 putter 和 getter 使用相同的代码页。这是因为,最终该应用程序将传播或移动,然后当您确实需要它时,您必须返回并更改应用程序。在不需要时使用 MQGMO_CONVERT 没有任何缺点,它只是一个空操作。但是当您确实需要它时不使用它有一个缺点。

关于linux - 在 Linux 中使用 WebSphere MQ 的默认 CCSID 连接到 Windows 中的客户端应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25975978/

相关文章:

mysql - XAMPP: Mysql 无法启动 linux

python - 在 while 循环中生成绘图后在 KeyboardInterrupt 上退出

windows - 如何以编程方式清除 WinInet SSL 状态(是否有 Windows API 调用)?

java - 如何在 WebSphere MQ 的 rfhutilc 中设置 JMS 属性?

linux - 如何将目标词干传递给 Makefile 中的 shell 命令

linux - Bash脚本复制无名文件夹

java - 带有基于内容的过滤器的 JMS

ibm-mq - 传输队列的预期用途

c++ - 如何在 Windows PC 上导出 C++ 项目并在 Linux PC 上运行它?

windows - Flutter Desktop 使用鼠标滚轮滚动 : step size