Упражнение. Настройка приложений для отправки или получения сообщений через концентратор событий

Завершено

Теперь можно настраивать приложения для публикации и получения событий через концентратор событий.

В этом уроке вы настраиваете приложения для отправки или получения сообщений через концентратор событий. Одно приложение работает как отправитель сообщений (SimpleSend), а другое — как получатель (EventProcessorSample). Приложения хранятся в репозитории GitHub.

Создание стандартной учетной записи хранения общего назначения

Приложение-получатель Java хранит сообщения в службе Хранилища BLOB-объектов Azure, для чего требуется учетная запись хранения. Создайте учетную запись хранения (общего назначения версии 2) с помощью команды storage account create. Мы определяем следующие параметры для этой команды:

Параметр Описание
name (обязательный) Имя вашей учетной записи.
resource-group (обязательный параметр) Владелец группы ресурсов — это группа ресурсов песочницы, которая уже определена как значение по умолчанию.
location (необязательный параметр) Регион уже определен как значение по умолчанию, но его можно включить, если вы хотите задать другой регион из расположения группы ресурсов по умолчанию.
sku Значение SKU по умолчанию учетной записи хранения Standard_RAGRS. Но в этом упражнении мы указываем это значение.

В предыдущем упражнении мы определили значения по умолчанию для группы ресурсов и расположения, поэтому можем опустить в команде эти параметры.

  1. В Azure Cloud Shell задайте переменной имя учетной записи хранения. Имя учетной записи хранения должно быть уникальным в пределах Azure и содержать от 3 до 24 цифр или строчных букв.

    STORAGE_NAME=storagename$RANDOM
    
  2. Выполните следующую команду, чтобы создать учетную запись хранения.

    az storage account create --name $STORAGE_NAME --sku Standard_RAGRS --encryption-service blob
    

    Совет

    Создание этой учетной записи хранения может занять некоторое время. Если создать учетную запись хранения не удалось, измените переменную среды и повторите попытку.

  3. Выполните следующую команду, чтобы получить ключи доступа, связанные с учетной записью хранения.

    az storage account keys list --account-name $STORAGE_NAME
    
  4. Два ключа, связанные с вашей учетной записью хранения, выводятся в формате JSON. Скопируйте и сохраните значение key1 для использования в будущем. Этот ключ необходим для доступа к учетной записи хранения.

  5. Выполните следующую команду, чтобы получить строку подключения для учетной записи хранения.

    az storage account show-connection-string -n $STORAGE_NAME
    
  6. Выходные данные содержат сведения о подключении для вашей учетной записи хранения. Скопируйте и сохраните значение connectionString. Должно отобразиться примерно следующее:

    "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage_account_name;AccountKey=xxxxxxxxxxx"
    
  7. Создайте в учетной записи хранения контейнер с именем messages, используя следующую команду. Вставьте значение строки подключения (connectionString), которое вы скопировали на предыдущем шаге.

    az storage container create --name messages --connection-string "<connection string here>"
    

Клонирование репозитория центров событий GitHub

Исходные файлы для приложений, создаваемых в этом уроке, находятся в репозитории GitHub.

  1. Запустите GitBash на компьютере.

  2. Выполните следующую команду, чтобы клонировать решение проекта Git:

    cd ~
    git clone https://github.com/Azure/azure-event-hubs.git
    
  3. Запустите VS Code на компьютере.

Измените SimpleSend.java для отправки событий в концентратор событий

В этом упражнении вы используете Visual Studio Code (VS Code) для изменения приложения SimpleSend. Необходимо добавить пространство имен Центров событий, имя концентратора событий, имя политики общего доступа и первичный ключ.

  1. Запустите VS Code.

  2. Выберите файл —>Открыть папкуи выберите папку SimpleSend в разделе c:/users/USERID/azure-event-hubs/samples/java/basic.

  3. В обозревателе кода в левой области разверните src, а затем дважды щелкните SimpleSend.java, чтобы открыть его в редакторе.

  4. В редакторе найдите и замените следующие строки в разделе ConnectionStringBuilder:

    • <EVENT HUBS NAMESPACE - CONNECTION STRING> со строкой подключения к пространству имен Event Hubs.
    • <EVENT HUB NAME> замените именем концентратора событий;

    Когда вы создаете пространство имен концентраторов событий, для вашего первичного ключа SAS создается 256-битный ключ SAS с именем RootManageSharedAccessKey. Он включает пару первичного и вторичного ключей, предоставляющих права на отправку, прослушивание и управление правами для пространства имен. Ранее в этом упражнении вы получили ключ с помощью команды Azure CLI; однако для поиска ключей и строк подключения можно также выбрать пространство имен концентраторов событий на портале Azure, а затем в меню Параметры выбрать Политики общего доступа. Теперь выберите имя политики RootManageSharedAccessKey, чтобы показать ключи политики SAS.

  5. Сохраните файл SimpleSend.java.

Использование Maven для сборки SimpleSend.java

Теперь вы создадите приложение Java, выполнив команды mvn .

  1. В обозревателе кода щелкните правой кнопкой мыши SimpleSend.javaи выберите Открыть в интегрированном терминале.

  2. Введите следующую команду, чтобы перейти к главной папке SimpleSend.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    
  3. Выполните сборку приложения Java SimpleSend. Эта команда выполняет сборку приложения, используя сведения о подключении для вашего концентратора событий.

    mvn clean package -DskipTests
    

    Процесс сборки может занять несколько минут. Вы должны увидеть сообщение [INFO] BUILD SUCCESS, прежде чем продолжать работу.

    Результаты сборки для приложения-отправителя.

Измените EventProcessorSample.java, который получает события в шину событий.

Теперь вы настраиваете приложение приемника (также известного как подписчик или потребитель) для приема данных из концентратора событий.

Для приложения-получателя доступны два класса: EventHubReceiver и EventProcessorClient. EventProcessorClient построен на основе EventHubReceiver, но предоставляет более простой программный интерфейс, чем EventHubReceiver. EventProcessorClient может автоматически распределять секции сообщений между несколькими экземплярами EventProcessorClient с помощью одной учетной записи хранения.

В этой процедуре EventProcessorClient используется метод. Вы измените приложение EventProcessorSample, чтобы добавить следующие значения: пространство имен Центров событий, имя концентратора событий, имя политики общего доступа и первичный ключ, имя учетной записи хранения, строка подключения и имя контейнера.

  1. Запустите другой экземпляр VS Code.

  2. Выберите Файл —>Открыть папкуи выберите папку EventProcessorSample в папке c:/users/USERID/azure-event-hubs/samples/java/basic.

  3. В обозревателе кода в левой области разверните src, а затем дважды щелкните EventProcessorSample.java, чтобы открыть его в редакторе.

  4. В редакторе найдите и замените следующие строки в редакторе:

    • <EVENT HUBS NAMESPACE - CONNECTION STRING> — строка подключения к пространству имен Центров событий.
    • <EVENT HUB NAME> — имя концентратора событий.
    • <AZURE STORAGE - CONNECTION STRING> — строка подключения к учетной записи хранения Azure.
    • Убедитесь, что имя контейнера BLOB — сообщения. Если для контейнера используется другое имя, используйте это имя.
  5. Сохраните EventProcessorSample.java.

Использование Maven для сборки EventProcessorSample.java

  1. В обозревателе кода щелкните правой кнопкой мыши EventProcessorSample.javaи выберите Открыть в интегрированном терминале.

  2. Перейдите в главную папку EventProcessorSample, используя следующую команду.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    
  3. Выполните сборку приложения Java SimpleSend с помощью следующей команды, чтобы убедиться, что приложение использует сведения о подключении для концентратора событий.

    mvn clean package -DskipTests
    

    Процесс сборки может занять несколько минут. Вы должны увидеть сообщение [INFO] BUILD SUCCESS, прежде чем продолжать работу.

    Результаты сборки для приложения-получателя.

Запуск приложений отправителя и получателя

  1. Запустите приложение EventProcessorSample, используя следующую команду.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    java -jar ./target/eventprocessorsample-1.0.0-jar-with-dependencies.jar
    
  2. Вы увидите следующие выходные данные из приложения-получателя:

    Starting event processor
    Press enter to stop.
    
  3. Перейдите в окно VS Code с открытым кодом отправки приложения (SimpleSend). В интегрированном терминале запустите приложение Java из командной строки, выполнив следующую команду java и указав пакет .jar.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    java -jar ./target/simplesend-1.0.0-jar-with-dependencies.jar
    
  4. Когда появится сообщение Send Complete..., нажмите ВВОД или CTRL+C, чтобы остановить приложение.

    jar-with-dependencies.jar
    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    2018-09-18T19:42:15.146Z: Send Complete...
    
  5. В окне VS Code с запущенным приложением-получателем убедитесь, что вы видите сообщения. Нажмите ВВОД или нажмите CTRL+C, чтобы завершить программу.

    ...
    Starting event processor
    Press enter to stop.
    Processing event from partition 0 with sequence number 1 with body: Message 0
    Processing event from partition 0 with sequence number 2 with body: Message 1
    Processing event from partition 0 with sequence number 3 with body: Message 2
    Processing event from partition 0 with sequence number 4 with body: Message 3
    Processing event from partition 0 with sequence number 5 with body: Message 4
    

Итоги

В этом уроке вы настроили приложение отправителя, готовое к отправке сообщений в концентратор событий. Вы также настроили приложение-получатель, готовое к получению сообщений из концентратора событий.