Что касается вашей проблемы с зависанием, я опубликовал новый ответ в исходной ветке. Клиент зависает при вызове 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 для бесшовной интеграции и поддержки.
Что касается вопроса о написании всего этого с помощью специального кода, хотя это технически возможно, но, честно говоря, это очень непрактично инвестировать в эта гигантская задача по следующим причинам:
- Зачем изобретать велосипед?
- Это увеличит вашу головную боль при обслуживании из-за огромного количества пользовательского кода, который выполняет только техническую проводку, но вряд ли добавляет любую ценность для бизнеса.
- Вы будете в значительной степени самостоятельно решать любую проблему или будущую совместимость.
- Добавление всей низкоуровневой обработки AMQP и OAuth в ваш код добавит ненужное бремя для вашей команды, чтобы справиться с ними.
- .. и, самое главное, это будет стоить Мо ney and Time :)
Использование стандартных библиотек не только избавляет вас от множества усилий и денег, но и обеспечивает возможность повторного использования и поддержку как со стороны создателя, так и со стороны сообщества.