Упражнение. Настройка приложений для отправки или получения сообщений через концентратор событий
Теперь можно настраивать приложения для публикации и получения событий через концентратор событий.
В этом уроке вы настраиваете приложения для отправки или получения сообщений через концентратор событий. Одно приложение работает как отправитель сообщений (SimpleSend), а другое — как получатель (EventProcessorSample). Поскольку эти приложения написаны на Java, вы можете выполнять все действия по разработке, тестированию и управлению в браузере. Однако для любой другой платформы, например для .NET, необходимо использовать точно такую же конфигурацию. Приложения хранятся в репозитории 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=VZjXuMeuDqjCkT60xX6L5fmtXixYuY2wiPmsrXwYHIhwo736kSAUAj08XBockRZh7CZwYxuYBPe31hi8XfHlWw=="
Создайте в учетной записи хранения контейнер с именем messages, используя следующую команду. Вставьте значение строки подключения (connectionString), которое вы скопировали на предыдущем шаге.
az storage container create --name messages --connection-string "<connection string here>"
Клонирование репозитория центров событий GitHub
В Cloud Shell клонируйте репозиторий центров событий GitHub с git
помощью . Исходные файлы для приложений, создаваемых в этом уроке, находятся в репозитории GitHub.
Выполните следующие команды, чтобы перейти в корневой каталог Cloud Shell, и клонируйте этот репозиторий.
cd ~ git clone https://github.com/Azure/azure-event-hubs.git
Репозиторий клонируется в корневую папку.
Редактирование файла SimpleSend.java
В этом упражнении вы используете встроенный редактор Cloud Shell для изменения приложения SimpleSend. Необходимо добавить пространство имен Центров событий, имя концентратора событий, имя политики общего доступа и первичный ключ.
Перейдите в папку SimpleSend.
cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend/src/main/java/com/microsoft/azure/eventhubs/samples/SimpleSend
Откройте редактор Cloud Shell в текущей папке.
code .
Файлы в текущей папке перечислены в меню слева, а пространство редактора справа отображает содержимое имени файла, указанного в строке заголовка.
Если файл SimpleSend.java еще не открыт, откройте его, выбрав в списке файлов.
В редакторе найдите и замените следующие строки в разделе "Подключение ionStringBuilder".
"Your Event Hubs namespace name"
замените именем пространства имен для Центров событий;"Your Event Hub"
замените именем концентратора событий;"Your policy name"
замените значением RootManageSharedAccessKey;"Your primary SAS key"
замените значением ключа primaryKey для пространства имен Центров событий, который вы сохранили ранее;
Если вы забыли эти значения, можно переключиться в окно терминала под редактором и выполнить
echo
команду, чтобы получить список переменных среды. Например:echo $NS_NAME echo $HUB_NAME echo $STORAGE_NAME
Когда вы создаете пространство имен концентраторов событий, для вашего первичного ключа SAS создается 256-битный ключ SAS с именем RootManageSharedAccessKey. Он включает пару первичного и вторичного ключей, предоставляющих права на отправку, прослушивание и управление правами для пространства имен. Ранее в этом упражнении вы получили ключ с помощью команды Azure CLI; однако для поиска ключей и строк подключения можно также выбрать пространство имен концентраторов событий на портале Azure, а затем в меню Параметры выбрать Политики общего доступа. Теперь выберите имя политики RootManageSharedAccessKey, чтобы показать ключи политики SAS.
Сохраните файл SimpleSend.java и закройте редактор.
Совет
Чтобы сохранить изменения, нажмите клавиши CTRL+S. Закройте редактор с помощью сочетания клавиш CTRL+X в Windows и Linux или CMD+S в macOS. В отличие от окна терминала Cloud Shell, редактор Cloud Shell использует стандартные для вашей ОС сочетания клавиш копирования и вставки. Кроме того, можно открыть меню редактора, нажав кнопку с многоточием (...) в правом верхнем углу, для использования дополнительных команд редактирования.
Использование Maven для сборки SimpleSend.java
Теперь вы создадите приложение Java, выполнив команды mvn .
В Cloud Shell введите следующую команду, чтобы перейти в главную папку SimpleSend.
cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
Выполните сборку приложения Java SimpleSend. Эта команда выполняет сборку приложения, используя сведения о подключении для вашего концентратора событий.
mvn clean package -DskipTests
Процесс сборки может занять несколько минут. Вы должны увидеть сообщение [INFO] BUILD SUCCESS, прежде чем продолжать работу.
Редактирование файла EventProcessorSample.java
Теперь вы настраиваете приложение приемника (также известного как подписчик или потребитель) для приема данных из концентратора событий.
Для приложения-получателя доступны два класса: EventHubReceiver и EventProcessorHost. EventProcessorHost основывается на EventHubReceiver, но предоставляет более простой программный интерфейс, чем EventHubReceiver. EventProcessorHost может автоматически распределять разделы сообщения между несколькими экземплярами EventProcessorHost в пределах одной учетной записи хранения.
В этой процедуре EventProcessorHost
используется метод. Вы измените приложение EventProcessorSample, чтобы добавить следующие значения: пространство имен Центров событий, имя концентратора событий, имя политики общего доступа и первичный ключ, имя учетной записи хранения, строка подключения и имя контейнера.
Перейдите в папку EventProcessorSample, используя следующую команду.
cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample/src/main/java/com/microsoft/azure/eventhubs/samples/eventprocessorsample
Откройте редактор Cloud Shell.
code .
Выберите файл EventProcessorSample.java.
Средствами редактора найдите и замените следующие строки:
----EventHubNamespaceName----
замените именем пространства имен для Центров событий;----EventHubName----
замените именем концентратора событий;----SharedAccessSignatureKeyName----
замените значением RootManageSharedAccessKey;----SharedAccessSignatureKey----
замените значением ключа primaryKey для пространства имен Центров событий, который вы сохранили ранее;----AzureStorageConnectionString----
замените строкой подключения к учетной записи хранения, которую вы сохранили ранее;----StorageContainerName----
замените значением messages;----HostNamePrefix----
замените именем учетной записи хранения.
Сохраните файл EventProcessorSample.java с помощью меню "..." или с помощью сочетания клавиш (CTRL + S в Windows и Linux, Cmd + S в macOS).
Закройте редактор.
Использование Maven для сборки EventProcessorSample.java
Перейдите в главную папку EventProcessorSample, используя следующую команду.
cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
Выполните сборку приложения Java SimpleSend с помощью следующей команды, чтобы убедиться, что приложение использует сведения о подключении для концентратора событий.
mvn clean package -DskipTests
Процесс сборки может занять несколько минут. Вы должны увидеть сообщение [INFO] BUILD SUCCESS, прежде чем продолжать работу.
Запуск приложений отправителя и получателя
Запустите приложение Java из командной строки, выполнив следующую
java
команду и указав jar-пакет. Запустите приложение SimpleSend с помощью следующей команды.cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend java -jar ./target/simplesend-1.0.0-jar-with-dependencies.jar
Когда появится сообщение Отправка завершена, нажмите клавишу ВВОД.
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...
Запустите приложение EventProcessorSample, используя следующую команду.
cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample java -jar ./target/eventprocessorsample-1.0.0-jar-with-dependencies.jar
Когда прекратится вывод сообщений на консоль, нажмите клавишу ВВОД или сочетание клавиш CTRL+C, чтобы завершить программу.
... SAMPLE: Partition 0 checkpointing at 1064,19 SAMPLE (3,1120,20): "Message 80" SAMPLE (3,1176,21): "Message 84" SAMPLE (3,1232,22): "Message 88" SAMPLE (3,1288,23): "Message 92" SAMPLE (3,1344,24): "Message 96" SAMPLE: Partition 3 checkpointing at 1344,24 SAMPLE (2,1120,20): "Message 83" SAMPLE (2,1176,21): "Message 87" SAMPLE (2,1232,22): "Message 91" SAMPLE (2,1288,23): "Message 95" SAMPLE (2,1344,24): "Message 99" SAMPLE: Partition 2 checkpointing at 1344,24 SAMPLE: Partition 1 batch size was 3 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47 SAMPLE (0,1120,20): "Message 81" SAMPLE (0,1176,21): "Message 85" SAMPLE: Partition 0 batch size was 10 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47 SAMPLE: Partition 0 got event batch SAMPLE (0,1232,22): "Message 89" SAMPLE (0,1288,23): "Message 93" SAMPLE (0,1344,24): "Message 97" SAMPLE: Partition 0 checkpointing at 1344,24 SAMPLE: Partition 3 batch size was 8 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47 SAMPLE: Partition 2 batch size was 9 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47 SAMPLE: Partition 0 batch size was 3 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47
Итоги
В этом уроке вы настроили приложение отправителя, готовое к отправке сообщений в концентратор событий. Вы также настроили приложение-получатель, готовое к получению сообщений из концентратора событий.