Экспорт (0) Печать
Развернуть все

Шаг 1. Введение и предварительные требования

Обновлено: Сентябрь 2014 г.

Очереди обеспечивают доставку сообщений по принципу «первым пришел, первым ушел» (FIFO) одному или нескольким конкурирующим клиентам. Это значит, что сообщения обычно принимаются и обрабатываются получателями во временном порядке, в котором они добавлялись в очередь, и каждое сообщение принимается и обрабатывается только одним потребителем сообщений. Основное преимущество использования очередей состоит в том, что достигается "временная развязка" компонентов приложений: другими словами, создатели и потребители не обязаны отправлять и получать сообщения в одно и то же время, поскольку сообщения долговременно хранятся в очереди. С этим связано также преимущество "выравнивания нагрузки", позволяющее производителям и потребителям отправлять и получать сообщения с разной скоростью.

Ниже приведены некоторые предварительные действия по администрированию, которые необходимо выполнить перед тем, как приступать к работе с учебником. Первым шагом является создание пространство имен службы и получение общего секретного ключа. пространство имен службы предоставляет границу для каждого приложения, предоставленного посредством Служебная шина. Общий секретный ключ автоматически создается системой при создании пространство имен службы. Комбинация из пространство имен службы и общего секретного ключа представляет собой учетные данные для Служебная шина, позволяющие проверить подлинность доступа к приложению.

  1. Чтобы создать пространство имен службы, выполните действия, указанные в разделе Практическое руководство. Создание или изменение пространства имен службы служебной шины.

  2. В главном окне портала управления Azure щелкните имя пространство имен службы, созданного на предыдущем шаге.

  3. Щелкните Сведения о подключении в нижней части окна портала.

  4. В окне Доступ к сведениям о подключении запомните издателя по умолчанию и ключ по умолчанию или скопируйте их в буфер обмена. Эти значения понадобятся вам позднее.

Далее следует создать проект Visual Studio и написать две вспомогательные функции, загружающие список сообщений с разделителями-запятыми в строго типизированный объект (BrokeredMessage)  List.

  1. Откройте Visual Studio как администратор, щелкнув эту программу правой кнопкой мыши в меню Пуск и выбрав Запуск от имени администратора.

  2. Создайте новый проект консольного приложения. Щелкните меню Файл и выберите Новый, затем щелкните Проект. В диалоговом окне Новый проект выберите Visual C# (если Visual C# не отображается, найдите его в разделе Другие языки), щелкните шаблон консольного приложения и назовите его queuesample. Оставьте Расположение по умолчанию. Нажмите кнопку ОК, чтобы создать проект.

  3. В обозревателе решений щелкните правой кнопкой мыши имя проекта (в данном примере queuesample) и выберите Свойства.

  4. Щелкните вкладку Приложения слева, затем выберите .NET Framework 4 в списке Целевая платформа: . Щелкните Да при появлении запроса на перезагрузку проекта.

  5. Добавьте ссылки на сборки Microsoft.ServiceBus, System.Runtime.Serialization и System.ServiceModel:

    1. В обозревателе решений щелкните правой кнопкой мыши папку Ссылки, вложенную в папку проекта, а затем выберите команду Добавить ссылку....

    2. Выберите вкладку .NET в диалоговом окне Добавление ссылки и прокрутите страницу вниз, пока не увидите Microsoft.ServiceBus, выберите его, а затем нажмите кнопку ОК.

    3. Повторите перечисленные выше действия для System.Runtime.Serialization и System.ServiceModel.

  6. В обозревателе решений дважды щелкните файл Program.cs, чтобы открыть его в редакторе Visual Studio. Измените имя пространства имен по умолчанию с QueueSample на Microsoft.ServiceBus.Samples.

    namespace Microsoft.ServiceBus.Samples
    {
        …
    
  7. Добавьте операторы using для пространств имен Microsoft.ServiceBus, Microsoft.ServiceBus.Messaging , Microsoft.ServiceBus.Description, System.IO и System.Data.

    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. Перейдите к файлу Data.csv, созданному на шаге 6. Щелкните файл, затем щелкните Добавить. Может потребоваться выбрать Все файлы (*... *) в раскрывающемся списке типов файлов.

  1. Перед методом Main() нужно объявить две переменные: одну — типа DataTable, она будет содержать список сообщений в Data.csv. Другая должна иметь тип List, строго типизированный как BrokeredMessage. Вторая переменная представляет собой список сообщений через посредника, который будет использоваться далее в учебнике.

    namespace Microsoft.ServiceBus.Samples
    {
        public class Program
        {
    
            private static DataTable issues;
            private static List<BrokeredMessage> MessageList;
    
    
    
  2. Вне метода Main() определите метод ParseCSV(), который анализирует список сообщений в Data.csv и загружает сообщения в таблицу DataTable, как показано ниже. Метод возвращает объект 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(), который принимает объект DataTable, возвращенный методом ParseCSVFile() и загружает таблицу в строго типизированный список сообщений, передаваемых через посредника. Метод затем возвращает объект 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() добавьте оператор, который вызывает метод GenerateMessages() с возвращаемым значением ParseCSVFile() в качестве аргумента:

    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 , чтобы подтвердить правильность выполненной работы.

Показ:
© 2015 Microsoft