#c# #azure #azure-eventhub
#c# #azure #azure-eventhub
Вопрос:
Я новичок в платформе Azure, у меня есть только EventHubConnectionString и EventHubName, и у меня нет имени контейнера хранения, StorageAccountName и ключа учетной записи хранилища. Я хочу разработать одно приложение, которое получает события из event hub, но я не понимаю, как мне действовать без этой информации.Пожалуйста, помогите с этой проблемой.
Я перехожу по этой ссылке для справки Azure Event Hub.
Комментарии:
1. Имя учетной записи хранения и ключ находятся на вкладке «Ключи доступа» вашего экземпляра учетной записи хранения на портале azure.
2. Я голосую за закрытие этого вопроса как не по теме, потому что речь идет о поиске значений на веб-портале Azure, а не о программировании.
3. Вопрос очень актуальный и, на мой взгляд, не отклоняется от темы. Я полагаю, что вопрос в том, как я могу написать потребителя событий Azure Event Hub без использования Azure Storage .
Ответ №1:
Я не понимаю, как мне поступить с этой информацией
Похоже, что для использования Event Hub у вас должно быть что-то для управления контрольными точками. Большинство примеров и документации показывают использование хранилища Azure для хранения контрольных точек, которые автоматически создаются текущей базой кода .Net Azure SDK. В текущей документации на EventProcessorHost, похоже, не отображается ни один из конструкторов, для которого требуется не учетная запись хранилища, а пользовательский класс, который вы пишете, производный от ICheckpointManager.
Конструктор, который не документирован (на данный момент времени), выглядит следующим образом:
//
// Summary:
// Create a new host to process events from an Event Hub.
// This overload of the constructor allows maximum flexibility. This one allows
// the caller to specify the name of the processor host as well. The overload also
// allows the caller to provide their own lease and checkpoint managers to replace
// the built-in ones based on Azure Storage.
//
// Parameters:
// hostName:
// Name of the processor host. MUST BE UNIQUE. Strongly recommend including a Guid
// to ensure uniqueness.
//
// eventHubPath:
// The name of the EventHub.
//
// consumerGroupName:
// The name of the consumer group within the Event Hub.
//
// eventHubConnectionString:
// Connection string for the Event Hub to receive from.
//
// checkpointManager:
// Object implementing ICheckpointManager which handles partition checkpointing.
//
// leaseManager:
// Object implementing ILeaseManager which handles leases for partitions.
public EventProcessorHost(string hostName, string eventHubPath, string consumerGroupName, string eventHubConnectionString, ICheckpointManager checkpointManager, ILeaseManager leaseManager);
Комментарии:
1. спасибо, Эрик за эту информацию, поскольку я новичок в этой платформе, а также в C #, также я не знаю, как установить соединение с Azure Event hub для получения сообщения без информации о хранилище. Для меня было бы большим подспорьем, если бы вы предоставили полный код для установления соединения. Также предложите мне какую-нибудь ссылку для изучения этих концепций.
2. У меня нет примеров, но их там предостаточно. Что касается конкретного примера без Azure Storage, вот как это сделать, но я никогда не реализовывал это. Что касается ссылок, я настоятельно рекомендую google.com .
3. Спасибо, Эрик, я нашел инструмент, который делает что-то подобное, что я хочу, но я не знаю, как я получаю код для этого случая Azure Service Bus Explorer
Ответ №2:
Вам придется использовать пользовательский CheckpointManager для EventProcessorHost (EPH), если вы не хотите использовать диспетчер контрольных точек Azure по умолчанию. У Михаила Шилкова есть пример реализации SQL checkpointmanager.Пример SQLcheckpointManager
Комментарии:
1. первая предоставленная вами ссылка не приведет вас туда, куда следует из текста. Я думаю, что это может быть ошибкой. Пользовательский образец диспетчера контрольных точек, упомянутый во второй ссылке, очень полезен!
Ответ №3:
Вы можете использовать EventHubConsumerClient.ReadEventsAsync
. Для меня это лучше, потому что я не хочу использовать хранилище больших двоичных объектов. Но время от времени я получаю Error reading event: EventHubsException(ConsumerDisconnected)
Ответ №4:
Обратитесь к документам:https://learn.microsoft.com/en-us/java/api/com.azure.messaging.eventhubs?view=azure-java-stable
Фрагмент кода :
EventHubConsumerAsyncClient consumer = new EventHubClientBuilder()
.connectionString(connectionStr,eventhubName)
.consumerGroup(EventHubClientBuilder.DEFAULT_CONSUMER_GROUP_NAME)
.buildAsyncConsumerClient();
// Receive data for partition "0"
consumer.receiveFromPartition("0", EventPosition.latest()).subscribe(event -> {
System.out.println("Event received : " event.getData().getBodyAsString());
});