Prise en charge de la gestion des files d'attente
Avec l’adaptateur BizTalk Server MQSeries, vous pouvez désormais créer et supprimer des files d’attente à distance sur le Gestionnaire de files d’attente MQSeries. Cela est pris en charge, car BizTalk Server utilise un objet COM+ MQSAgent distant qui communique directement avec le gestionnaire de files d’attente MQSeries. Généralement, cet objet MQSAgent est utilisé au moment de l'exécution pour lire et écrire des messages dans les files d'attente du serveur MQSeries distant. Plusieurs serveurs BizTalk peuvent être clients de ce service distant. En outre, les fonctionnalités de création et de suppression de files d'attente sont fournies par ce composant MQSAgent et peuvent être appelées directement à partir d'une orchestration ou d'un adaptateur. Cela rend possible des scénarios hautement dynamiques dans lesquels l'orchestration ou l'adaptateur peut créer une file d'attente temporaire, y envoyer un message, recevoir une réponse sur une autre file d'attente, puis supprimer la file d'attente temporaire.
API CreateQueue et DeleteQueue
Les API CreateQueue et DeleteQueue sont définies comme suit :
Définition de structure
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;
Définition d'interface
[
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;
};
Exemples
Suivez les étapes de l’exemple 1 pour créer une application console Visual Studio C# qui peut être utilisée pour créer ou supprimer des files d’attente du serveur MQSeries.
Exemple 1
Pour créer une application de console C# permettant de gérer des files d'attente sur le serveur MQSeries
Créez une application console Visual C# dans Visual Studio avec le nom MQSeriesQueues.
Remplacez tout code existant dans le fichier Program.cs qui est généré par le code suivant :
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!"); } } } }
Ajoutez une référence à ce projet à la bibliothèque de types MQSAgent 1.0. La bibliothèque de types MQSAgent 1.0 est disponible sous l’onglet COM de la boîte de dialogue Ajouter une référence .
Notes
Le composant MQSAgent COM+ doit être installé sur l'ordinateur à partir duquel vous exécutez cette application de console. Pour plus d’informations sur l’installation du composant COM+ MQSAgent, consultez Utilisation de l’Assistant Configuration MQSAgent COM+.
Générez l'application console.
Ouvrez une invite de commandes dans le même répertoire que celui de l'application de console compilée.
Tapez le nom de l'application de console compilée avec les arguments adéquats, puis appuyez sur ENTRÉE. Par exemple, pour supprimer la file d’attente testq pour le gestionnaire de files d’attente QM_Test tapez le texte suivant à l’invite de commandes et appuyez sur ENTRÉE :
MQSeriesQueues d QM_Test testq
Pour créer la file d’attente testq pour le gestionnaire de files d’attente QM_Test tapez le texte suivant à l’invite de commandes et appuyez sur ENTRÉE :
MQSeriesQueues c QM_Test testq