Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Con l'adapter MQSeries BizTalk Server è ora possibile creare ed eliminare code in remoto nel Gestore code MQSeries. Questa operazione è supportata perché BizTalk Server usa un oggetto MQSAgent COM+ remoto che comunica direttamente con MQSeries Queue Manager. In genere, questo MQSAgent viene usato in fase di esecuzione per leggere e scrivere messaggi nelle code del server remoto MQSeries. Più di un server BizTalk possono essere un client di questo servizio remoto. Inoltre, le funzioni di creazione ed eliminazione della coda vengono fornite da questo MQSAgent e possono essere chiamate direttamente dall'interno di un'orchestrazione o di un adattatore. Ciò consente scenari altamente dinamici in cui l'orchestrazione o l'adattatore può creare una coda temporanea e quindi inviare un messaggio, ricevere una risposta in un'altra coda e infine eliminare la coda temporanea.
API CreateQueue e API DeleteQueue
Le API CreateQueue e DeleteQueue sono definite come segue.
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;
};
Esempi
Completare i passaggi nell'esempio 1 per creare un'applicazione console C# di Visual Studio che può essere usata per creare o eliminare code del server MQSeries.
Esempio 1
Creare un'applicazione console in C# per gestire le code del Server MQSeries
Creare una nuova applicazione console visual C# in Visual Studio con il nome MQSeriesQueues.
Sostituire qualsiasi codice esistente nel file Program.cs generato con il codice seguente:
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!"); } } } }
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 .
Annotazioni
Il componente MQSAgent COM+ deve essere installato nel computer da cui si esegue l'applicazione console. Per altre informazioni sull'installazione del componente COM+ MQSAgent, vedere Uso della Configurazione guidata COM+ MQSAgent.
Compilare l'applicazione console.
Aprire un prompt dei comandi nella stessa directory dell'applicazione console compilata.
Digitare il nome dell'applicazione console compilata con gli argomenti appropriati e premere INVIO. Ad esempio, per eliminare la coda testq per il gestore code QM_Test, digitare il testo seguente al prompt dei comandi, quindi premere INVIO:
MQSeriesQueues d QM_Test testq
Per creare la coda testq per il gestore code QM_Test, digitare il seguente testo al prompt dei comandi e premere INVIO.
MQSeriesQueues c QM_Test testq