エクスポート (0) 印刷
すべて展開

手順 1 :概要と前提条件

更新日: 2014年9月

キューは、1 人以上の競合するコンシューマーに先入れ先出し (FIFO) メッセージ配信を提供します。つまり、通常、メッセージはキューに登録された時間的な順序で受信者によって受信および処理されると予想され、各メッセージはただ 1 つのメッセージ コンシューマーによって受信および処理されます。キューを使用することの重要なメリットは、アプリケーション コンポーネントを "時間的に切り離す" ことです。つまり、メッセージは永続的にキューに格納されるため、プロデューサーとコンシューマーが同時に送信と受信をする必要はありません。関連するメリットとして "負荷の平滑化" があります。これにより、プロデューサーとコンシューマーは異なる速度でメッセージを送受信できます。

以下は、チュートリアル開始前に実行する必要のある、前提条件となる管理的手順です。まず、サービスの名前空間 を作成して共有シークレットキーを取得します。サービスの名前空間は、Service Bus で公開された各アプリケーションについて、アプリケーションの境界を提供します。サービスの名前空間 が作成されると、システムによって共有の共通キーが自動的に生成されます。サービスの名前空間と共有のシークレット キーの組み合わせによって、Service Bus がアプリケーションへのアクセスを認証するための資格情報が提供されます。

  1. サービスの名前空間を作成するには、「方法: Service Bus Service 名前空間を作成または変更する」で説明されている手順に従います。

  2. Windows Azure 管理ポータルのメイン ウィンドウで、前の手順において作成したサービスの名前空間の名前をクリックします。

  3. ポータル ウィンドウ下部で、[アクセス キー] をクリックします。

  4. [名前空間に接続] ウィンドウで、既定の発行者と既定のキーをメモするか、クリップボードにコピーします。これらの値はこのチュートリアルの後半で使用します。

次の手順では、Visual Studio 2012 プロジェクトを作成し、厳密に型指定された (BrokeredMessage) List オブジェクトにコンマで区切られたメッセージの一覧を読み込むヘルパー関数を 2 つ記述します。

  1. 管理者として Visual Studio 2012 を開き、スタート メニューのプログラムを右クリックして、[管理者として実行] をクリックします。

  2. 新しいコンソール アプリケーション プロジェクトを作成します。[ファイル] メニューをクリックし、[新規]、[プロジェクト] の順にクリックします。[新しいプロジェクト] ダイアログ ボックスで、[Visual C#] ([Visual C#] が表示されない場合は [他の言語] を確認) をクリックし、[コンソール アプリケーション] テンプレートをクリックして名前を「QueueSample」に設定します。既定の [場所] を使用します。プロジェクトを作成するには、[OK] をクリックします。

  3. ソリューション エクスプローラーで、プロジェクトの名前 (この例では [QueueSample]) を右クリックし、[プロパティ] をクリックします。

  4. 左側の [アプリケーション] タブをクリックして、[ターゲット フレームワーク] ドロップダウンから [.NET Framework 4] を選択してください。選択してください。プロジェクトの再ロードを求めるメッセージが表示されたら、[はい] をクリックします。

  5. Microsoft.ServiceBus アセンブリ、System.Runtime.Serialization アセンブリ、および System.ServiceModel アセンブリに参照を追加します。

    1. ソリューション エクスプローラーで、プロジェクト フォルダーの下の References フォルダーを右クリックして [参照の追加] をクリックします。

    2. [参照の追加] ダイアログ ボックスで [.NET] タブを選択し、[Microsoft.ServiceBus] が表示されるまで下にスクロールして選択し、[OK] をクリックします。

    3. [System.Runtime.Serialization] および [System.ServiceModel] についても、上記の手順を繰り返します。

  6. ソリューション エクスプローラーで、[Program.cs] ファイルをダブルクリックして Visual Studio エディターで開きます。名前空間の名前を既定の QueueSample から Microsoft.ServiceBus.Samples に変更します。

    namespace Microsoft.ServiceBus.Samples
    {
        …
    
  7. Microsoft.ServiceBusMicrosoft.ServiceBus.Messaging , Microsoft.ServiceBus.DescriptionSystem.IO、および System.Data 名前空間に using ステートメントを追加します。

    using Microsoft.ServiceBus;
    using Microsoft.ServiceBus.Messaging;
    using Microsoft.ServiceBus.Description;
    using System.Data;
    using System.IO;
    
  8. テキスト ファイルを作成して Data.csv と名前を付け、次のコンマ区切りのテキストにコピーします。

    IssueID,IssueTitle,CustomerID,CategoryID,SupportPackage,Priority,Severity,Resolved
    1,Package lost,1,1,Basic,5,1,FALSE
    2,Package damaged,1,1,Basic,5,1,FALSE
    3,Product defective,1,2,Premium,5,2,FALSE
    4,Product damaged,2,2,Premium,5,2,FALSE
    5,Package lost,2,2,Basic,5,2,TRUE
    6,Package lost,3,2,Basic,5,2,FALSE
    7,Package damaged,3,7,Premium,5,3,FALSE
    8,Product defective,3,2,Premium,5,3,FALSE
    9,Product damaged,4,6,Premium,5,3,TRUE
    10,Package lost,4,8,Basic,5,3,FALSE
    11,Package damaged,5,4,Basic,5,4,FALSE
    12,Product defective,5,4,Basic,5,4,FALSE
    13,Package lost,6,8,Basic,5,4,FALSE
    14,Package damaged,6,7,Premium,5,5,FALSE
    15,Product defective,6,2,Premium,5,5,FALSE
    
    

    Data.csv ファイルを保存して閉じ、保存した場所をメモします。

  9. ソリューション エクスプローラーで、プロジェクトの名前 (この例では [QueueSample]) を右クリックし、[追加] をクリックしてから [既存の項目] をクリックします。

  10. 手順 6 で作成した Data.csv ファイルを参照します。ファイルをクリックし、[追加] をクリックします。ファイルの種類のドロップダウン メニューで [すべてのファイル (*.*)] が選択されていることを確認します。

  1. Main() メソッドの前に変数を 2 つ宣言します。1 つは DataTable 型で、Data.csv 内のメッセージの一覧を格納します。もう 1 つは BrokeredMessage で厳密に型指定された List 型のオブジェクトです。後者は仲介型メッセージの一覧で、このチュートリアルのこの後の手順で使用します。

    namespace Microsoft.ServiceBus.Samples
    {
        public class Program
        {
    
            private static DataTable issues;
            private static List<BrokeredMessage> MessageList;
    
    
    
  2. ここに示すとおり、Main() メソッド以外の場所で、Data.csv 内のメッセージの一覧を解析して DataTable テーブルに読み込む ParseCSV() メソッドを定義します。このメソッドは DataTable オブジェクトを返します。

    static DataTable ParseCSVFile()
    {
        DataTable tableIssues = new DataTable("Issues");
        string path = @"..\..\data.csv";
        try
        {
            using (StreamReader readFile = new StreamReader(path))
            {
                string line;
                string[] row;
    
                // create the columns
                line = readFile.ReadLine();
                foreach (string columnTitle in line.Split(','))
                {
                    tableIssues.Columns.Add(columnTitle);
                }
    
                while ((line = readFile.ReadLine()) != null)
                {
                    row = line.Split(',');
                    tableIssues.Rows.Add(row);
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("Error:" + e.ToString());
        }
    
        return tableIssues;
    }
    
  3. Main() メソッドで、 ParseCSVFile() メソッドを呼び出すステートメントを追加します。

    public static void Main(string[] args)
    {
    
        // Populate test data
        issues = ParseCSVFile();
    
    }
    

  1. Main() メソッド以外の場所で、GenerateMessages() メソッドを定義します。このメソッドは、ParseCSVFile() が返した DataTable オブジェクトを受け取って、このテーブルを仲介型メッセージの厳密に型指定された一覧に読み込みます。その後、List オブジェクトを返します。次に例を示します。

    static List<BrokeredMessage> GenerateMessages(DataTable issues)
    {
        // Instantiate the brokered list object
        List<BrokeredMessage> result = new List<BrokeredMessage>();
    
        // Iterate through the table and create a brokered message for each row
        foreach (DataRow item in issues.Rows)
        {
            BrokeredMessage message = new BrokeredMessage();
            foreach (DataColumn property in issues.Columns)
            {
                message.Properties.Add(property.ColumnName, item[property]);
            }
            result.Add(message);
        }
        return result;
    }
    
  2. Main() メソッドで、ParseCSVFile() の呼び出しのすぐ下に、引数として ParseCSVFile() からの戻り値を持つ GenerateMessages() メソッドを呼び出すステートメントを追加します。

    public static void Main(string[] args)
    {
    
        // Populate test data
        issues = ParseCSVFile();
        MessageList = GenerateMessages(issues);
    }
    

  1. まず、これらの値を保持するグローバルな文字列変数を作成します。その前の変数の宣言の後で、これらの変数を直接宣言します。例:

    namespace Microsoft.ServiceBus.Samples
    {
        public class Program
        {
    
            private static DataTable issues;
            private static List<BrokeredMessage> MessageList; 
            // add these variables
            private static string ServiceNamespace;
            private static string IssuerName;
            private static string IssuerKey;
            …
    
  2. 次に、サービスの名前空間、発行者名、および発行者キーを受け取って格納する関数を作成します。このメソッドを Main() 以外の場所に追加します。例:

    static void CollectUserInput()
    {
        // User service namespace
        Console.Write("Please enter the service namespace to use: ");
        ServiceNamespace = Console.ReadLine();
    
        // Issuer name
        Console.Write("Please enter the issuer name to use: ");
        IssuerName = Console.ReadLine();
    
        // Issuer key
        Console.Write("Please enter the issuer key to use: ");
        IssuerKey = Console.ReadLine();
    }
    
  3. Main() メソッドで、GenerateMessages() の呼び出しのすぐ下に、CollectUserInput() メソッドを呼び出すステートメントを追加します。

    public static void Main(string[] args)
    {
    
        // Populate test data
        issues = ParseCSVFile();
        MessageList = GenerateMessages(issues);
        
        // Collect user input
        CollectUserInput();
    }
    

コードのコンパイル方法

  • Visual Studio の [ビルド] メニューで [ソリューションのビルド] をクリックするか、F6 キーを押して、ここまで正しく作業したことを確認します。

表示:
© 2014 Microsoft