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