Estoy intentando crear un tema y publicar un mensaje en el tema de IBM MQ. Recibo la excepción 2085 MQ y estoy seguro de cómo resolver esto.
La versión de IBM.XMS.dll que estoy usando es 8.0.0.6.

Código de la aplicación de consola:

    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();
        }

    }

Detalles de excepción:

Mensaje de error:
CWSMQ0006E: Se recibió una excepción durante la llamada al método WmqV6Session.SetupPubSub: CompCode: 2, Reason: 2085. Durante la ejecución del método especificado, se lanzó una excepción. otro componente. Consulte la excepción vinculada para obtener más información.

Razón de excepción vinculada: 2085

Seguimiento de pila de excepciones vinculadas:
en IBM.WMQ.MQDestination.Open (MQObjectDescriptor & od) en IBM.WMQ.MQQueue..ctor (MQQueueManager qMgr, String queueName, Int32 openOptions, String queueManagerName, String dynamicQueueName, String alternateUserId) en IBM.WMQ.MQQueueManager.AccessQueue (String queueName, Int32 openOptions, String queueManagerName, String dynamicQueueName, String alternateUserId) en IBM.WMQ.MQQueueManager.AccessQueue (String nombre de la cola, Int32 openOptions) en IBM.XMS.Client.WMQ.MqV6Impl.WmqV6Session.SetUpPubSub (booleano startCleanup)

1
PushCode 16 jul. 2017 a las 01:46

2 respuestas

La mejor respuesta

Asegúrese de que su canal SVRCONN tenga un valor SHARECNV de 1 o superior.

Página del centro de conocimiento de IBM MQ v8 "Cliente MQI: comportamiento predeterminado de los canales de conexión del cliente y del servidor "documenta lo siguiente sobre SHARECNV(0):

Este valor especifica que no se comparten conversaciones a través de un socket TCP / IP. La instancia del canal se comporta exactamente como si fuera un servidor de la versión 6.0. o canal de conexión del cliente , y no obtiene las funciones adicionales como latidos bidireccionales que están disponibles cuando configura SHARECNV a 1 o mayor. Utilice solo un valor de 0 si tiene aplicaciones cliente que no se ejecutan correctamente cuando configura SHARECNV en 1 o mayor.

La página del centro de conocimiento de IBM MQ v8 "XMSC_WMQ_PROVIDER_VERSION" documenta lo siguiente:

De forma predeterminada, esta propiedad se establece en "sin especificar".

...

Las funciones específicas de IBM WebSphere MQ versión 7.0 están deshabilitadas si XMSC_WMQ_PROVIDER_VERSION está configurado como UNSPECIFIED y SHARECNV está configurado como 0.

Eso haría que XMS intentara usar la cola STREAM para publicar mensajes con publicación / suscripción en cola. Configúrelo en 1 o superior para obtener una conexión de estilo v7 y usar la publicación / suscripción integrada v7 normal.

En algunas versiones anteriores, configurar SHARECNV(0) era una solución para ciertos problemas, no conozco ningún problema de v8 que tenga esta solución.

2
JoshMc 16 jul. 2017 a las 14:54

La sintaxis para especificar el destino del tema debe comenzar con "topic: //". Por ejemplo session.CreateTopic("topic://Score/Football"). Consulte la documentación aquí para obtener más detalles.

0
Shashi 16 jul. 2017 a las 00:18