Unterstützung für Warteschlangenverwaltung
Mit dem BizTalk Server MQSeries-Adapter können Sie jetzt Warteschlangen remote im MQSeries-Warteschlangen-Manager erstellen und löschen. Dies wird unterstützt, da BizTalk Server ein MQSAgent-Com+-Remoteobjekt verwendet, das direkt mit dem MQSeries-Warteschlangen-Manager kommuniziert. Normalerweise wird dieser MQSAgent zur Laufzeit zum Lesen und Schreiben von Nachrichten aus den und in die MQSeries Server-Remotewarteschlangen verwendet. Mehrere Computer mit BizTalk Server können Clients dieses Remotediensts sein. Außerdem werden von diesem MQSAgent Funktionen zum Erstellen und Löschen von Warteschlangen zur Verfügung gestellt, und er kann direkt aus einer Orchestrierung oder einem Adapter aufgerufen werden. Auf diese Weise werden hochgradig dynamische Szenarien ermöglicht, in denen die Orchestrierung oder der Adapter eine temporäre Warteschlange erstellen und dann für diese Nachrichten senden oder eine Antwort für eine andere Warteschlange empfangen und schließlich die temporäre Warteschlange löschen kann.
„CreateQueue“- und „DeleteQueue“-APIs
Die CreateQueue- und DeleteQueue-APIs sind folgendermaßen definiert.
Strukturdefinition
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;
Schnittstellendefinition
[
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;
};
Beispiele
Führen Sie die Schritte in Beispiel 1 aus, um eine Visual Studio C#-Konsolenanwendung zu erstellen, die zum Erstellen oder Löschen von MQSeries Server-Warteschlangen verwendet werden kann.
Beispiel 1
Erstellen einer C#-Konsolenanwendung zum Verwalten von MQSeries Server-Warteschlangen
Erstellen Sie eine neue Visual C#-Konsolenanwendung in Visual Studio mit dem Namen MQSeriesQueues.
Ersetzen Sie ggf. vorhandenen Code in der Datei Program.cs, die generiert wird, durch den unten genannten Code:
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!"); } } } }
Fügen Sie der MQSAgent 1.0-Typbibliothek einen Verweis auf dieses Projekt hinzu. Die MQSAgent 1.0-Typbibliothek ist auf der Registerkarte COM des Dialogfelds Verweis hinzufügen verfügbar.
Hinweis
Die MQSAgent COM+-Komponente muss auf dem Computer installiert sein, auf dem Sie diese Konsolenanwendung ausführen. Weitere Informationen zum Installieren der MQSAgent COM+-Komponente finden Sie unter Verwenden des MQSAgent COM+-Konfigurations-Assistenten.
Erstellen Sie die Konsolenanwendung.
Öffnen Sie eine Eingabeaufforderung im gleichen Verzeichnis wie die kompilierte Konsolenanwendung.
Geben Sie den Namen der kompilierten Konsolenanwendung mit den entsprechenden Argumenten ein, und drücken Sie dann die EINGABETASTE. Um beispielsweise den Warteschlangentestq für den Warteschlangen-Manager QM_Test zu löschen, geben Sie an der Eingabeaufforderung den folgenden Text ein, und drücken Sie die EINGABETASTE:
MQSeriesQueues d QM_Test testq
Zum Erstellen des Warteschlangentestq für den Warteschlangen-Manager QM_Test geben Sie an der Eingabeaufforderung den folgenden Text ein, und drücken Sie die EINGABETASTE:
MQSeriesQueues c QM_Test testq