Compartir a través de


Compatibilidad de la administración de cola

Con el adaptador de BizTalk Server MQSeries, ahora puede crear y eliminar colas de forma remota en el Administrador de colas mqSeries. Esto se admite porque BizTalk Server usa un objeto MQSAgent COM+ remoto que se comunica directamente con el Administrador de colas mqSeries. Como norma general, MQSAgent se utiliza en tiempo de ejecución para leer mensajes en las colas remotas de MQSeries Server o bien, escribirlos allí. Más de un servidor BizTalk Server puede ser cliente de este servicio remoto. Además, MQSAgent proporciona las funciones de creación y eliminación de colas y es posible llamar de forma directa desde una orquestación o adaptador. Esto se permite en escenarios muy dinámicos a través de los cuales la orquestación o el adaptador pueden crear una cola temporal y enviar, a continuación, un mensaje mediante ella, recibir una respuesta en otra cola y, por último, eliminar la cola temporal.

API CreateQueue y DeleteQueue

Las API CreateQueue y DeleteQueue se definen de la siguiente forma.

Definición de estructura

typedef enum QueueUsage {  
      Normal       = 0,  
      Transmission = 1  
} QueueUsage;  
  
typedef enum ResultCode {  
      QueueAlreadyExists                     = 0, //  no bits set  
      QueueCreated                           = 1, //  QueueCreated  
      QueueCreatedAndRemoteDefinitionUpdated = 5, //  QueueCreated | RemoteDefinitionUpdated  
      QueueAndRemoteDefinitionCreated        = 7, //  QueueCreated | RemoteDefinitionCreated | RemoteDefinitionUpdated  
      QueueDoesNotExist                      = 8, //  QueueDoesNotExist  
      QueueDeleted                           = 16 //  QueueDeleted  
} ResultCode;  

Definición de interfaz

[  
            object,  
            uuid(E90AC1A6-657B-4680-AF6A-89F11113FB8B),  
            dual,  
            nonextensible,  
            helpstring("IMQSAdmin Interface"),  
            pointer_default(unique)  
]  
interface IMQSAdmin2 : IDispatch{  
  
HRESULT CreateQueue (  
[in]BSTR queueManager,  
[in]BSTR newQueueName,  
[in]QueueUsage usage,  
[in]BSTR remoteDefinition,  
[in]BSTR remoteQName,  
[in]BSTR remoteQMgrName,  
[in]BOOL updateExistingRemoteDefinition,  
[out, retval]ResultCode* resultCode);  
  
HRESULT DeleteQueue (  
[in]BSTR queueManager,  
[in]BSTR newQueueName,  
[out, retval]ResultCode* resultCode);  
};  
  
      [  
            uuid(412AF00D-7CA8-4d2a-AFF6-F61CE2E29A0D),  
            helpstring("MQSAdmin Class")  
      ]  
      coclass MQSAdmin  
      {  
            [default] interface IMQSAdmin2;  
      };  
  

Ejemplos

Complete los pasos descritos en el ejemplo 1 para crear una aplicación de consola de C# de Visual Studio que se puede usar para crear o eliminar colas del servidor MQSeries.

Ejemplo 1

Crear una aplicación de consola de C# para administrar colas de servidor MQSeries
  1. Cree una nueva aplicación de consola de Visual C# en Visual Studio con el nombre MQSeriesQueues.

  2. Reemplace el código existente del archivo Program.cs que se genera con el código siguiente:

    using System;  
    using System.Collections.Generic;  
    using System.Text;  
    using MQSAgentLib;  
    
    namespace MQSeriesQueues  
    {  
        class ManageQueues  
        {  
            public static void Main(string[] args)  
            {  
                // The first argument should be "c" (without quotes)  
                // to create a queue, anything else to delete a queue.  
                // The 2nd and 3rd arguments should be the name of   
                // the MQSeries Queue Manager and the name of   
                // the queue to be created or deleted for example  
                // the following usage will create the local   
                // queue testq for the Queue Manager QM_Test  
                // MQSeriesQueues c QM_Test testq  
                createordeleteQs(args[0], args[1], args[2]);  
            }  
    
            static void createordeleteQs(string Qswitch, string QMgr, string QName)  
            {   
            if ((Qswitch =="c" & (QMgr != null & QName != null)))  
                {  
                    CreateQueue(QMgr, QName);  
                }  
                else if(QMgr != null & QName != null)  
                {  
                    DeleteQueue(QMgr, QName);  
                }  
             }  
    
            static void CreateQueue(string Qmgr, string Qname)  
            {  
                MQSAdmin admin = new MQSAdmin();    
    
                ResultCode resultCode = admin.CreateQueue(Qmgr, Qname, 0, "", "", "", 0);  
    
                if ((resultCode & ResultCode.QueueCreated) == ResultCode.QueueCreated)  
                {  
                    Console.WriteLine("Queue Created.");  
                }  
                else if ((resultCode & ResultCode.QueueAlreadyExists) == ResultCode.QueueAlreadyExists)  
                {  
                    Console.WriteLine("Queue Already Exists.");  
                }  
            }  
    
            static void DeleteQueue(string Qmgr, string Qname)  
            {  
                MQSAdmin admin = new MQSAdmin();  
    
                ResultCode resultCode = admin.DeleteQueue(Qmgr, Qname);  
    
                if ((resultCode & ResultCode.QueueDeleted) == ResultCode.QueueDeleted)  
                {  
                    Console.WriteLine("Queue successfully deleted.");  
                }  
                if ((resultCode & ResultCode.QueueDoesNotExist) == ResultCode.QueueDoesNotExist)  
                {  
                    Console.WriteLine("Queue did not exist anyway!");  
                }  
            }  
    
        }  
    }  
    
  3. Agregue una referencia a este proyecto a la biblioteca de tipos MQSAgent 1.0. La biblioteca de tipos MQSAgent 1.0 está disponible en la pestaña COM del cuadro de diálogo Agregar referencia .

    Nota

    El componente MQSAgent COM+ debe estar instalado en el equipo en el que está ejecutando esta aplicación de consola. Para obtener más información sobre cómo instalar el componente MQSAgent COM+, consulte Uso del Asistente para configuración de MQSAgent COM+.

  4. Compile la aplicación de la consola.

  5. Abra un símbolo del sistema en el mismo directorio en el que se encuentra la aplicación de consola compilada.

  6. Escriba el nombre de la aplicación de consola compilada con los argumentos adecuados y presione ENTRAR. Por ejemplo, para eliminar la cola testq del Administrador de colas QM_Test escribiría el texto siguiente en el símbolo del sistema y presione ENTRAR:

    MQSeriesQueues d QM_Test testq  
    
  7. Para crear la cola testq para queue Manager QM_Test escribiría el texto siguiente en el símbolo del sistema y presione ENTRAR:

    MQSeriesQueues c QM_Test testq