选项 1(如果它有效,这似乎更简单,因为您不再需要您正在使用的 CCDT,因为它是以前唯一已知的指定压缩选项的方法):
基于 JMS 和 XMS 的文档组合,我认为以下可能有效,请尝试一下,如果这不起作用,那么我将从我的答案中删除它,如果它有效,那么我将使用指向该混合物的链接进行更新的文档。
var factory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
var cf = factory.CreateConnectionFactory();
cf.SetStringProperty(XMSC.WMQ_HOST_NAME, host);
cf.SetIntProperty(XMSC.WMQ_PORT, port);
cf.SetStringProperty(XMSC.WMQ_CHANNEL, channel);
//empty string "" or "*" would work equally well for XMSC.WMQ_QUEUE_MANAGER to accept any queue manager name
cf.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, "");
cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT_UNMANAGED);
cf.SetStringProperty(XMSC.WMQ_HEADER_COMP, "SYSTEM NONE");
cf.SetStringProperty(XMSC.WMQ_MSG_COMP, "ZLIBFAST ZLIBHIGH RLE NONE");
connection = cf.CreateConnection();
选项 2直接将 CCDT 位置指定到 XMSFactoryFactory 并且不依赖于环境变量:
直接创建带有 CCDT 链接的 CF,而不是使用环境变量。
var factory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
var cf = factory.CreateConnectionFactory();
cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT_UNMANAGED);
cf.SetStringProperty(XMSC.WMQ_CCDTURL, @"file://C:\ProgramData\IBM\MQ\AMQCLCHL<PORT>.TAB";
cf.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, "*");
connection = cf.CreateConnection();