我在将 JSON 字符串消息发布到 IBM MQ 主题时遇到了这个随机问题。它总是如此随机地发生。我不确定如何查明问题。自从我切换到 SSL 通道后,这种情况就发生了。
我使用的 IBM.XMS.dll 版本是 8.0.0.6。以下是代码片段和异常详细信息:
static void Main(string[] args)
{
try
{
XMSFactoryFactory factoryFactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
IConnectionFactory connectionFactory = factoryFactory.CreateConnectionFactory();
Console.WriteLine("Connection Factory created.");
connectionFactory.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, "MQ_TX_MGR");
connectionFactory.SetStringProperty(XMSC.WMQ_CONNECTION_NAME_LIST, "10.10.10.10(1414)");
connectionFactory.SetStringProperty(XMSC.WMQ_CHANNEL, "CL.SVRCONN");
connectionFactory.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT);
connectionFactory.SetIntProperty(XMSC.WMQ_CLIENT_RECONNECT_OPTIONS, XMSC.WMQ_CLIENT_RECONNECT);
connectionFactory.SetIntProperty(XMSC.WMQ_CLIENT_RECONNECT_TIMEOUT, 3);
connectionFactory.SetStringProperty(XMSC.WMQ_SSL_KEY_REPOSITORY, "*SYSTEM");
connectionFactory.SetStringProperty(XMSC.WMQ_SSL_CIPHER_SPEC, "MYCipherSpec");
mqConnection = connectionFactory.CreateConnection();
Console.WriteLine("Connection created.");
session = mqConnection.CreateSession(false, AcknowledgeMode.AutoAcknowledge);
Console.WriteLine("Session created.");
IDestination destination = session.CreateTopic("topic://TOPIC/NAME"); // destinationName
Console.WriteLine("Destination created.");
// create producer
IMessageProducer producer = session.CreateProducer(destination);
IMessage outbound = null;
outbound = session.CreateTextMessage("Long JSON String");
producer.Send(outbound);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
Console.WriteLine("Program waiting for message:");
Console.ReadLine();
}
}
例外:
堆栈跟踪:
在 IBM.WMQ.MQFAP.NmqiConnect(String name, NmqiConnectOptions pNmqiConnectOpts, MQConnectOptions cno, Hconn parentHconn, Phconn pHconn, Int32& compCode, Int32& reason, ManagedHconn rcnHconn)
在 IBM.WMQ.MQFAP.NmqiConnect(String pQMgrName, NmqiConnectOptions pNmqiConnectOpts , MQConnectOptions pConnectOpts, Hconn parentHconn, Phconn pHconn, Int32& pCompCode, Int32& pReason)
在 IBM.XMS.Client.WMQ.WmqSession..ctor(WmqConnection connection, AcknowledgeMode ackMode, XmsPropertyContext properties)
在 IBM.XMS.Client.WMQ.WmqConnection。
IBM.XMS.Client.Impl.XmsConnectionImpl.CreateSession(Boolean transacted, AcknowledgeMode ackMode) 上的CreateSession(XmsPropertyContext properties, AcknowledgeMode ackMode)