Condividi tramite


Supporto per la gestione delle code

Con l'adattatore MQSeries BizTalk Server è ora possibile creare ed eliminare code in remoto in Gestione code MQSeries. Questa operazione è supportata perché BizTalk Server usa un oggetto MQSAgent COM+ remoto che comunica direttamente con GESTIONE code MQSeries. Questo oggetto MQSAgent viene in genere utilizzato in fase di esecuzione per leggere e scrivere messaggi sulle code remote del server MQSeries. Più server BizTalk possono essere client di questo servizio remoto. L'oggetto MQSAgent fornisce inoltre funzioni di creazione ed eliminazione delle code che possono essere chiamate direttamente dall'interno di un'orchestrazione o di un adapter. In questo modo è possibile creare scenari altamente dinamici in cui l'orchestrazione o l'adapter può creare una coda temporanea e inviare un messaggio su tale coda, ricevere una replica su un'altra coda e infine eliminare la coda temporanea.

API CreateQueue e DeleteQueue

Le API CreateQueue e DeleteQueue vengono definite nel modo descritto di seguito.

Definizione della struttura

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;  

Definizione dell'interfaccia

[  
            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;  
      };  
  

Esempio

Completare i passaggi descritti nell'esempio 1 per creare un'applicazione console C# di Visual Studio che può essere usata per creare o eliminare code MQSeries Server.

Esempio 1

Creazione di un'applicazione console C# per la gestione delle code del server MQSeries
  1. Creare una nuova applicazione console Visual C# in Visual Studio con il nome MQSeriesQueues.

  2. Sostituire il codice esistente nel file Program.cs generato con il codice riportato di seguito:

    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. Aggiungere un riferimento a questo progetto alla libreria dei tipi MQSAgent 1.0. La libreria dei tipi MQSAgent 1.0 è disponibile nella scheda COM della finestra di dialogo Aggiungi riferimento .

    Nota

    Il componente COM+ MQSAgent deve essere installato nel computer su cui viene eseguita l'applicazione console. Per altre informazioni sull'installazione del componente MQSAgent COM+, vedere Uso della configurazione guidata COM+ MQSAgent.

  4. Compilare l'applicazione console.

  5. Aprire un prompt dei comandi nella stessa directory dell'applicazione console compilata.

  6. Digitare il nome dell'applicazione console compilata con gli argomenti appropriati e premere INVIO. Ad esempio, per eliminare il testq della coda per Gestione code QM_Test digitare il testo seguente al prompt dei comandi e premere INVIO:

    MQSeriesQueues d QM_Test testq  
    
  7. Per creare il testq della coda per Gestione code QM_Test digitare il testo seguente al prompt dei comandi e premere INVIO:

    MQSeriesQueues c QM_Test testq