Концентратор событий Azure - невозможно понять поток Java - PullRequest
0 голосов
/ 19 сентября 2019

из примеров Microsoft EventHub Java SDK (https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-java-get-started-send),). Это шаги, которые необходимо предпринять, чтобы иметь возможность получать сообщения из Even-Hub через java SDK:

1.Создатьучетная запись хранения

2. Создайте новый класс с именем EventProcessorSample. Замените заполнители на значения, использованные при создании концентратора событий и учетной записи хранения:

3.

  String consumerGroupName = "$Default";
   String namespaceName = "----NamespaceName----";
   String eventHubName = "----EventHubName----";
   String sasKeyName = "----SharedAccessSignatureKeyName----";
   String sasKey = "----SharedAccessSignatureKey----";
   String storageConnectionString = "----AzureStorageConnectionString----";
   String storageContainerName = "----StorageContainerName----";
   String hostNamePrefix = "----HostNamePrefix----";

   ConnectionStringBuilder eventHubConnectionString = new ConnectionStringBuilder()
        .setNamespaceName(namespaceName)
        .setEventHubName(eventHubName)
        .setSasKeyName(sasKeyName)
        .setSasKey(sasKey);

Есть несколько вещей, которые я не понимаю в этом потоке -

A. Почему требуется учетная запись хранения? Почему ее нужно создавать только при создании потребителя, а не при создании самого концентратора событий?

B. Что такое «hostNamePrefix» и почему он необходим?

C. Больше генерации A, но я не понимаю, почему этот поток настолько сложен и нуждается вКонфигурация Event Hub - это единственный и единственный способ экспорта данных метрик / мониторинга из Azure, который представляет собой довольно простой процесс - Azure -> Event Hub -> Java Application. Amя упускаю более простой способ или более простой вариант клиента?

1 Ответ

1 голос
/ 20 сентября 2019

Все ваши вопросы касаются использования событий из концентратора событий.

Зачем нужна учетная запись хранения?

  1. Чтение события только один раз : всякий раз, когда ваше приложение будет читать событие из концентратора событий, вам необходимо сохранить смещение (идентификатор для количества уже прочитанного события)ценность где-то.Хранение этой информации известно как « CheckPointing », и эта информация будет храниться в Учетная запись хранения .
  2. Читайте события при запуске каждый раз, когда ваше приложениеподключается к нему : в этом случае ваше приложение будет продолжать читать событие с самого начала, когда бы оно ни началось.

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

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

В зависимости от сценария, хотите ли вы читать свои события только один раз или каждый раз ваше приложение запускается, и поэтому учетная запись хранения не требуется при создании событияhub.

Что такое «hostNamePrefix» и почему он необходим?

Как следует из названия « hostNamePrefix », этоя для вашего хозяина.Хост означает приложение, которое потребляет события.И хорошей практикой является использование GUID в качестве hostNamePrefix.HostNamePrefix требуется концентратором событий для управления соединением с хостом.В случае, если у вас есть 32 раздела, и вы развернули 4 экземпляра одного и того же приложения, тогда каждому разделу будет назначено 8 разделов, и именно здесь имя хоста помогает концентратору событий управлять информацией о подключениисоответствующие разделы для их хоста.

Я предлагаю вам прочитать эту статью о концентраторе событий , чтобы получить ясную картину хоста процессора событий.

...