我正在开发一个.net核心应用程序来连接ibm mq。由于某些客户端限制,我们无法安装Ibm mq客户端。我使用amqmdnetstd.dll(9.3.2.0)进行连接。
请注意ibm mq服务器和应用程序位于不同的系统中。
下面是我用于连接的代码片段:
MQQueue objMQQueue;
MQMessage objPutMQMessage;
MQMessage objReadMQMessage;
MQQueueManager objMQQueueManager;
string SSLCipher = string.Empty;
string SLLKey = string.Empty;
string QueueManager = string.Empty;
string QueueChannel = string.Empty;
string ConnectionName = string.Empty;
SSLCipher = ibmOptions.SSLCipher;
SLLKey = ibmOptions.SLLKey;
X509Certificate2 certificate = new X509Certificate2(SLLKey, ibmOptions.SLLKeyPassword);
Hashtable properties = new Hashtable();
properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);
properties.Add(MQC.SSL_CERT_STORE_PROPERTY, certificate);
Console.WriteLine(DateTime.Now.ToLongTimeString() + " Certificate object " + JsonConvert.SerializeObject(certificate));
QueueManager = ibmOptions.QueueManager;
QueueChannel = ibmOptions.QueueChannel;
ConnectionName = ibmOptions.ConnectionName;
MQEnvironment.SSLCipherSpec = SSLCipher; //SSL Encryption Method
MQEnvironment.properties.Add("KeyRepository", properties);
objMQQueueManager = new MQQueueManager(QueueManager, QueueChannel, ConnectionName);
objMQQueue = objMQQueueManager.AccessQueue("FTS.FCUBS.IN.UAT", MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);
objPutMQMessage = new MQMessage();
//UTF-8 character encoding
objPutMQMessage.CharacterSet = 1208;
objPutMQMessage.WriteString("Test data");
objPutMQMessage.Format = MQC.MQFMT_STRING;
objPutMQMessage.MessageType = MQC.MQMT_REQUEST;
objPutMQMessage.Report = MQC.MQRO_COPY_MSG_ID_TO_CORREL_ID;
objPutMQMessage.ReplyToQueueName = "FTS.FCUBS.OUT.UAT";
objMQQueue.Put(objPutMQMessage);
objMQQueueManager.Commit();
if (objMQQueue.OpenStatus)
{
objMQQueue.Close();
}
我得到一个错误像dspmqver命令未找到。我明白这个错误是由于应用程序服务器没有安装客户端库的事实。有没有办法解决这个问题,而不安装客户端。
1条答案
按热度按时间cetgtptt1#
正如在对这个问题的评论中所暗示的那样,您共享的源代码不太可能调用
dspmqver
。我怀疑正在发生的事情是你正在执行你的.net代码,它抛出了一个
"2538":"MQRC_HOST_NOT_AVAILABLE"
,然后为了进行额外的诊断,运行你的应用程序的脚本,shell到dspmqver
,以获取和显示你的应用程序没有使用的MQ客户端的版本。您需要深入研究服务器和客户端日志,以确定
2538
的根本原因。