将消息发送到 Azure 事件中心的简单方法 - 第二种方法

Simple way to send message to Azure Event Hub - second approach

我的第一个方法是使用 com.microsoft.azure:azure-eventhubs:3.2.0 依赖项,但我遇到了以下问题:

所以我的第二种方法可以是

你能给我推荐支持 OAuth2 的库吗?
或者支持使用 OAuth2 通过 AMQP 向事件中心发送消息的示例代码?
或者第三种方法......?

谢谢,
五、

关于你的挂起问题,我在原帖贴了一个新的回答。 这应该可以解决您的问题

现在回到这个问题,主要是您应该遵循 latest tutorial(使用 Event Hub v5 sdk 使用 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 身份验证方法而不是共享访问签名(默认连接字符串方法)。您可以按照 this tutorial for Managed Identity scenario OR this tutorial 进行基于自定义 AAD 应用程序的身份验证。

关于 OAuth2 库的推荐,Azure 世界的第一方选择是 MSAL 无缝集成和支持。

关于通过自定义代码编写整个事情的问题,虽然在技术上是可行的,但老实说,由于以下原因,投资于这项庞大的任务是非常不切实际的:

  1. 为什么要重新发明轮子?
  2. 大量自定义代码只会增加技术连接,但几乎不会为业务增加任何价值,这会增加您的维护麻烦。
  3. 您几乎可以自己解决任何问题或未来的兼容性问题。
  4. 在您的代码中添加所有低级 AMQP 和 OAuth 处理会给您的团队增加不必要的负担。
  5. ..最重要的是它会花费金钱和时间:)

使用标准库不仅可以节省大量的精力和金钱,还可以确保可重用性,以及创作者和社区的支持。