Простой способ отправить сообщение на Azure Event Hub - второй подход - PullRequest
0 голосов
/ 06 августа 2020

Мой первый подход заключался в использовании зависимости com.microsoft.azure:azure-eventhubs:3.2.0, но у меня возникла следующая проблема: Клиент зависает при вызове Azure Event Hub и сталкивается с ошибкой подключения

Итак, мой второй подход может быть

  • либо для использования другой зависимости (мне тоже нужно использовать OAuth2) -> к сожалению, я не нашел ни
  • или не использую зависимость, а закодируйте сообщение отправить себя -> это может быть большой задачей

Не могли бы вы порекомендовать мне библиотеку, поддерживающую OAuth2? Или пример кода, который поддерживает отправку сообщений в Event Hub через AMQP с OAuth2? Или третий подход ...?

Спасибо, В.

1 Ответ

1 голос
/ 11 августа 2020

Что касается вашей проблемы с зависанием, я опубликовал новый ответ в исходной ветке. Клиент зависает при вызове Azure Event Hub и сталкивается с ошибкой подключения . Это должно решить вашу проблему .

Теперь, возвращаясь к этому вопросу, в первую очередь вам следует следовать последнему руководству (используется SDK Event Hub v5 с использованием шаблона Producer / Consumer) .

import com.azure.messaging.eventhubs.*;

public class Sender {
    public static void main(String[] args) {
        final String connectionString = "EVENT HUBS NAMESPACE CONNECTION STRING";
        final String eventHubName = "EVENT HUB NAME";

        // create a producer using the namespace connection string and event hub name
        EventHubProducerClient producer = new EventHubClientBuilder()
            .connectionString(connectionString, eventHubName)
            .buildProducerClient();

        // prepare a batch of events to send to the event hub    
        EventDataBatch batch = producer.createBatch();
        batch.tryAdd(new EventData("First event"));
        batch.tryAdd(new EventData("Second event"));
        batch.tryAdd(new EventData("Third event"));
        batch.tryAdd(new EventData("Fourth event"));
        batch.tryAdd(new EventData("Fifth event"));

        // send the batch of events to the event hub
        producer.send(batch);

        // close the producer
        producer.close();
    }
}

Что касается вопроса об OAuth2, то очень возможно использовать подход аутентификации AAD вместо Shared Access Signature (подход строки подключения по умолчанию). Вы можете следовать этому руководству для сценария управляемой идентификации ИЛИ этому руководству для пользовательской аутентификации на основе приложения AAD.

Что касается рекомендации по библиотеке OAuth2, выбор первой стороны в Azure мир будет MSAL для бесшовной интеграции и поддержки.

Что касается вопроса о написании всего этого с помощью специального кода, хотя это технически возможно, но, честно говоря, это очень непрактично инвестировать в эта гигантская задача по следующим причинам:

  1. Зачем изобретать велосипед?
  2. Это увеличит вашу головную боль при обслуживании из-за огромного количества пользовательского кода, который выполняет только техническую проводку, но вряд ли добавляет любую ценность для бизнеса.
  3. Вы будете в значительной степени самостоятельно решать любую проблему или будущую совместимость.
  4. Добавление всей низкоуровневой обработки AMQP и OAuth в ваш код добавит ненужное бремя для вашей команды, чтобы справиться с ними.
  5. .. и, самое главное, это будет стоить Мо ney and Time :)

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

...