キュー管理のサポート
BizTalk Server MQSeries アダプターを使用すると、MQSeries キュー・マネージャーでキューをリモートで作成および削除できるようになりました。 これは、BizTalk Serverが MQSeries キュー・マネージャーと直接通信するリモート MQSAgent COM+ オブジェクトを使用するため、サポートされています。 通常この MQSAgent は、リモートの MQSeries Server キューにメッセージを読み書きする実行時に使用されます。 このリモート サービスには、複数の BizTalk サーバーをクライアントとすることができます。 MQSAgent ではキューの作成および削除機能も提供され、これはオーケストレーションまたはアダプタ内から直接呼び出すことができます。 このことによって、高度に動的なシナリオを実現できます。このシナリオでは、オーケストレーションまたはアダプタは一時キューを作成でき、そのキューでメッセージを送信し、別のキューで返信を受け取り、最後に一時キューを削除できます。
CreateQueue および DeleteQueue API
CreateQueue および DeleteQueue API は次のように定義されています。
構造体定義
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;
インターフェイス定義
[
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;
};
例
例 1 の手順を実行して、MQSeries Server キューの作成または削除に使用できる Visual Studio C# コンソール アプリケーションを作成します。
例 1
MQSeries Server キューを管理する C# コンソール アプリケーションの作成
VISUAL Studio で MQSeriesQueues という名前の新しい Visual C# コンソール アプリケーションを作成します。
以下のコードで生成される Program.cs ファイルで既存のコードを置き換えます。
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!"); } } } }
このプロジェクトへの参照を MQSAgent 1.0 タイプ・ライブラリーに追加します。 MQSAgent 1.0 タイプ・ライブラリーは、「参照の追加」ダイアログ・ボックスの「COM」タブにあります。
Note
このコンソール アプリケーションを実行するコンピュータには、MQSAgent COM+ コンポーネントがインストールされている必要があります。 MQSAgent COM+ コンポーネントのインストールの詳細については、「 MQSAgent COM+ 構成ウィザードの使用」を参照してください。
コンソール アプリケーションをビルドします。
コンパイルしたコンソール アプリケーションと同じディレクトリで、コマンド プロンプトを開きます。
コンパイルしたコンソール アプリケーションの名前を、適切な引数と共に入力し、Enter キーを押します。 たとえば、Queue Manager QM_Testのキュー testq を削除するには、コマンド プロンプトで次のテキストを入力し、Enter キーを押します。
MQSeriesQueues d QM_Test testq
Queue Manager QM_Testのキュー テストqを作成するには、コマンド プロンプトで次のテキストを入力し、Enter キーを押します。
MQSeriesQueues c QM_Test testq