次の方法で共有


キュー管理のサポート

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# コンソール アプリケーションの作成
  1. VISUAL Studio で MQSeriesQueues という名前の新しい Visual C# コンソール アプリケーションを作成します。

  2. 以下のコードで生成される 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!");  
                }  
            }  
    
        }  
    }  
    
  3. このプロジェクトへの参照を MQSAgent 1.0 タイプ・ライブラリーに追加しますMQSAgent 1.0 タイプ・ライブラリーは、「参照の追加」ダイアログ・ボックスの「COM」タブにあります。

    Note

    このコンソール アプリケーションを実行するコンピュータには、MQSAgent COM+ コンポーネントがインストールされている必要があります。 MQSAgent COM+ コンポーネントのインストールの詳細については、「 MQSAgent COM+ 構成ウィザードの使用」を参照してください。

  4. コンソール アプリケーションをビルドします。

  5. コンパイルしたコンソール アプリケーションと同じディレクトリで、コマンド プロンプトを開きます。

  6. コンパイルしたコンソール アプリケーションの名前を、適切な引数と共に入力し、Enter キーを押します。 たとえば、Queue Manager QM_Testのキュー testq を削除するには、コマンド プロンプトで次のテキストを入力し、Enter キーを押します。

    MQSeriesQueues d QM_Test testq  
    
  7. Queue Manager QM_Testのキュー テストqを作成するには、コマンド プロンプトで次のテキストを入力し、Enter キーを押します。

    MQSeriesQueues c QM_Test testq