Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit dem BizTalk Server MQSeries-Adapter können Sie jetzt Remotewarteschlangen im MQSeries Queue Manager erstellen und löschen. Dies wird dadurch unterstützt, dass BizTalk Server ein remote MQSAgent COM+-Objekt verwendet, das direkt mit dem MQSeries Queue Manager kommuniziert. In der Regel wird dieser MQSAgent zur Laufzeit verwendet, um Nachrichten aus den Warteschlangen des Remote-MQSeries-Servers zu lesen und in diese zu schreiben. Mehrere BizTalk-Server können ein Client dieses Remotediensts sein. Darüber hinaus werden Funktionen zum Erstellen und Löschen von Warteschlangen von diesem MQSAgent bereitgestellt und können direkt aus einer Orchestrierung oder einem Adapter aufgerufen werden. Dies ermöglicht hoch dynamische Szenarien, in denen die Orchestrierung oder der Adapter eine temporäre Warteschlange erstellen und dann eine Nachricht darauf senden, eine Antwort in einer anderen Warteschlange erhalten und schließlich die temporäre Warteschlange löschen kann.
CreateQueue- und DeleteQueue-APIs
Die CreateQueue- und DeleteQueue-APIs werden wie folgt 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-Serverwarteschlangen
Erstellen Sie eine neue Visual C#-Konsolenanwendung in Visual Studio mit dem Namen MQSeriesQueues.
Ersetzen Sie vorhandenen Code in der datei Program.cs, die mit dem folgenden Code generiert wird:
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 einen Verweis auf dieses Projekt zur MQSAgent 1.0-Typbibliothek hinzu. Die MQSAgent 1.0-Typbibliothek ist auf der COM-Registerkarte 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 Verwendung des MQSAgent COM+-Konfigurations-Assistenten.
Erstellen Sie die Konsolenanwendung.
Öffnen Sie eine Eingabeaufforderung im selben Verzeichnis wie die kompilierte Konsolenanwendung.
Geben Sie den Namen der kompilierten Konsolenanwendung mit den entsprechenden Argumenten ein, und drücken Sie die EINGABETASTE. Um beispielsweise die Warteschlange testq für den Warteschlangen-Manager QM_Test zu löschen, geben Sie den folgenden Text an der Eingabeaufforderung ein und drücken Sie die EINGABETASTE.
MQSeriesQueues d QM_Test testqUm die Warteschlange testq für den Warteschlangen-Manager QM_Test zu erstellen, geben Sie folgenden Text an der Eingabeaufforderung ein und drücken Sie die EINGABETASTE:
MQSeriesQueues c QM_Test testq