我正在尝试创建主题并向IBM MQ主题发布消息。我得到2085 MQ异常,并确定如何解决这个问题 我使用的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);
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); //My Code is erroring out at this line.
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
Console.WriteLine("Program waiting for message:");
Console.ReadLine();
}
}
异常详细信息:
错误消息:
CWSMQ0006E:呼叫期间收到异常 方法WmqV6Session.SetupPubSub:CompCode:2,原因:2085。 在执行指定方法期间,抛出异常 另一个组件。有关详细信息,请参阅链接的异常。链接异常原因:2085
链接异常堆栈跟踪:
at IBM.WMQ.MQDestination.Open(MQObjectDescriptor& od)at IBM.WMQ.MQQueue..ctor(MQQueueManager qMgr,String queueName,Int32 openOptions,String queueManagerName,String dynamicQueueName,String alternateUserId)在IBM.WMQ.MQQueueManager.AccessQueue(String queueName,Int32 openOptions,String queueManagerName,String dynamicQueueName,String alternateUserId)at IBM.WMQ.MQQueueManager.AccessQueue(String queueName,Int32 openOptions)at IBM.XMS.Client.WMQ.MqV6Impl.WmqV6Session.SetUpPubSub(布尔 startCleanup)
答案 0 :(得分:2)
确保您的SVRCONN
频道的SHARECNV
值为1或更高。
IBM MQ v8知识中心页面" MQI client: Default behavior of client-connection and server-connection channels"记录以下关于SHARECNV(0)
:
此值指定不通过TCP / IP套接字共享对话。 通道实例的行为与版本6.0服务器完全相同 或客户端连接渠道 ,您没有获得额外的功能 例如设置时可用的双向心跳 SHARECNV为1或更高。 如果您已存在,则仅使用值0 将SHARECNV设置为时,无法正确运行的客户端应用程序 1或更高。
IBM MQ v8知识中心页面" XMSC_WMQ_PROVIDER_VERSION"记录以下内容:
默认情况下,此属性设置为"未指定"。
...
如果,则禁用IBM WebSphere MQ V7.0特定功能 XMSC_WMQ_PROVIDER_VERSION设置为UNSPECIFIED并且SHARECNV设置为 0 强>
这会导致XMS尝试使用STREAM队列发布带有排队发布/订阅的消息。将其设置为1或更高以获得v7
样式连接,并使用普通v7
集成发布/订阅。
在某些过去的版本中设置SHARECNV(0)
是针对某些问题的解决方法,我不知道有任何v8
问题可以解决这些问题。
答案 1 :(得分:0)
指定主题目标的语法必须以“topic://”开头。例如typeB
。有关详细信息,请参阅文档 here。