Упражнение. Настройка приложений для отправки или получения сообщений через концентратор событий
Теперь можно настраивать приложения для публикации и получения событий через концентратор событий.
В этом уроке вы настраиваете приложения для отправки или получения сообщений через концентратор событий. Одно приложение работает как отправитель сообщений (SimpleSend), а другое — как получатель (EventProcessorSample). Приложения хранятся в репозитории GitHub.
Создание стандартной учетной записи хранения общего назначения
Приложение-получатель Java хранит сообщения в службе Хранилища BLOB-объектов Azure, для чего требуется учетная запись хранения. Создайте учетную запись хранения (общего назначения версии 2) с помощью команды storage account create
. Мы определяем следующие параметры для этой команды:
Параметр | Описание |
---|---|
name (обязательный) | Имя вашей учетной записи. |
resource-group (обязательный параметр) | Владелец группы ресурсов — это группа ресурсов песочницы, которая уже определена как значение по умолчанию. |
location (необязательный параметр) | Регион уже определен как значение по умолчанию, но его можно включить, если вы хотите задать другой регион из расположения группы ресурсов по умолчанию. |
sku | Значение SKU по умолчанию учетной записи хранения Standard_RAGRS. Но в этом упражнении мы указываем это значение. |
В предыдущем упражнении мы определили значения по умолчанию для группы ресурсов и расположения, поэтому можем опустить в команде эти параметры.
В Azure Cloud Shell задайте переменной имя учетной записи хранения. Имя учетной записи хранения должно быть уникальным в пределах Azure и содержать от 3 до 24 цифр или строчных букв.
STORAGE_NAME=storagename$RANDOM
Выполните следующую команду, чтобы создать учетную запись хранения.
az storage account create --name $STORAGE_NAME --sku Standard_RAGRS --encryption-service blob
Совет
Создание этой учетной записи хранения может занять некоторое время. Если создать учетную запись хранения не удалось, измените переменную среды и повторите попытку.
Выполните следующую команду, чтобы получить ключи доступа, связанные с учетной записью хранения.
az storage account keys list --account-name $STORAGE_NAME
Два ключа, связанные с вашей учетной записью хранения, выводятся в формате JSON. Скопируйте и сохраните значение key1 для использования в будущем. Этот ключ необходим для доступа к учетной записи хранения.
Выполните следующую команду, чтобы получить строку подключения для учетной записи хранения.
az storage account show-connection-string -n $STORAGE_NAME
Выходные данные содержат сведения о подключении для вашей учетной записи хранения. Скопируйте и сохраните значение connectionString. Должно отобразиться примерно следующее:
"DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage_account_name;AccountKey=xxxxxxxxxxx"
Создайте в учетной записи хранения контейнер с именем messages, используя следующую команду. Вставьте значение строки подключения (connectionString), которое вы скопировали на предыдущем шаге.
az storage container create --name messages --connection-string "<connection string here>"
Клонирование репозитория центров событий GitHub
Исходные файлы для приложений, создаваемых в этом уроке, находятся в репозитории GitHub.
Запустите GitBash на компьютере.
Выполните следующую команду, чтобы клонировать решение проекта Git:
cd ~ git clone https://github.com/Azure/azure-event-hubs.git
Запустите VS Code на компьютере.
Измените SimpleSend.java для отправки событий в концентратор событий
В этом упражнении вы используете Visual Studio Code (VS Code) для изменения приложения SimpleSend. Необходимо добавить пространство имен Центров событий, имя концентратора событий, имя политики общего доступа и первичный ключ.
Запустите VS Code.
Выберите файл —>Открыть папкуи выберите папку SimpleSend в разделе c:/users/USERID/azure-event-hubs/samples/java/basic.
В обозревателе кода в левой области разверните src, а затем дважды щелкните SimpleSend.java, чтобы открыть его в редакторе.
В редакторе найдите и замените следующие строки в разделе ConnectionStringBuilder:
-
<EVENT HUBS NAMESPACE - CONNECTION STRING>
со строкой подключения к пространству имен Event Hubs. -
<EVENT HUB NAME>
замените именем концентратора событий;
Когда вы создаете пространство имен концентраторов событий, для вашего первичного ключа SAS создается 256-битный ключ SAS с именем RootManageSharedAccessKey. Он включает пару первичного и вторичного ключей, предоставляющих права на отправку, прослушивание и управление правами для пространства имен. Ранее в этом упражнении вы получили ключ с помощью команды Azure CLI; однако для поиска ключей и строк подключения можно также выбрать пространство имен концентраторов событий на портале Azure, а затем в меню Параметры выбрать Политики общего доступа. Теперь выберите имя политики RootManageSharedAccessKey, чтобы показать ключи политики SAS.
-
Сохраните файл SimpleSend.java.
Использование Maven для сборки SimpleSend.java
Теперь вы создадите приложение Java, выполнив команды mvn .
В обозревателе кода щелкните правой кнопкой мыши SimpleSend.javaи выберите Открыть в интегрированном терминале.
Введите следующую команду, чтобы перейти к главной папке SimpleSend.
cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
Выполните сборку приложения Java SimpleSend. Эта команда выполняет сборку приложения, используя сведения о подключении для вашего концентратора событий.
mvn clean package -DskipTests
Процесс сборки может занять несколько минут. Вы должны увидеть сообщение [INFO] BUILD SUCCESS, прежде чем продолжать работу.
Измените EventProcessorSample.java, который получает события в шину событий.
Теперь вы настраиваете приложение приемника (также известного как подписчик или потребитель) для приема данных из концентратора событий.
Для приложения-получателя доступны два класса: EventHubReceiver и EventProcessorClient. EventProcessorClient построен на основе EventHubReceiver, но предоставляет более простой программный интерфейс, чем EventHubReceiver. EventProcessorClient может автоматически распределять секции сообщений между несколькими экземплярами EventProcessorClient с помощью одной учетной записи хранения.
В этой процедуре EventProcessorClient
используется метод. Вы измените приложение EventProcessorSample, чтобы добавить следующие значения: пространство имен Центров событий, имя концентратора событий, имя политики общего доступа и первичный ключ, имя учетной записи хранения, строка подключения и имя контейнера.
Запустите другой экземпляр VS Code.
Выберите Файл —>Открыть папкуи выберите папку EventProcessorSample в папке c:/users/USERID/azure-event-hubs/samples/java/basic.
В обозревателе кода в левой области разверните src, а затем дважды щелкните EventProcessorSample.java, чтобы открыть его в редакторе.
В редакторе найдите и замените следующие строки в редакторе:
-
<EVENT HUBS NAMESPACE - CONNECTION STRING>
— строка подключения к пространству имен Центров событий. -
<EVENT HUB NAME>
— имя концентратора событий. -
<AZURE STORAGE - CONNECTION STRING>
— строка подключения к учетной записи хранения Azure. - Убедитесь, что имя контейнера BLOB — сообщения. Если для контейнера используется другое имя, используйте это имя.
-
Сохраните EventProcessorSample.java.
Использование Maven для сборки EventProcessorSample.java
В обозревателе кода щелкните правой кнопкой мыши EventProcessorSample.javaи выберите Открыть в интегрированном терминале.
Перейдите в главную папку EventProcessorSample, используя следующую команду.
cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
Выполните сборку приложения Java SimpleSend с помощью следующей команды, чтобы убедиться, что приложение использует сведения о подключении для концентратора событий.
mvn clean package -DskipTests
Процесс сборки может занять несколько минут. Вы должны увидеть сообщение [INFO] BUILD SUCCESS, прежде чем продолжать работу.
Запуск приложений отправителя и получателя
Запустите приложение EventProcessorSample, используя следующую команду.
cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample java -jar ./target/eventprocessorsample-1.0.0-jar-with-dependencies.jar
Вы увидите следующие выходные данные из приложения-получателя:
Starting event processor Press enter to stop.
Перейдите в окно 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
Когда появится сообщение 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...
В окне 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
Итоги
В этом уроке вы настроили приложение отправителя, готовое к отправке сообщений в концентратор событий. Вы также настроили приложение-получатель, готовое к получению сообщений из концентратора событий.