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

Завершено

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

В этом уроке вы настраиваете приложения для отправки или получения сообщений через концентратор событий. Одно приложение выступает в качестве отправителя сообщения (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. Выполните следующую команду, чтобы создать контейнер с именем сообщений в учетной записи хранения. Используйте значение 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-объектов — messages. Если для контейнера используется другое имя, используйте это имя.
  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. Когда появится сообщение "Отправка завершена...", нажмите Enter или 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
    

Итоги

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