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

Java 向Azure事件中心发送消息的简单方法-第二种方法,java,azure,azure-eventhub,Java,Azure,Azure Eventhub,我的第一种方法是使用com.microsoft.azure:azure eventhubs:3.2.0依赖项,但我遇到了以下问题: 所以我的第二种方法是 或者使用另一个依赖项(我也需要使用OAuth2)->不幸的是,我没有找到任何依赖项 或者不要使用依赖项,而是通过自己发送消息来编写代码->这可能是一项艰巨的任务 您能向我推荐支持OAuth2的库吗? 或者是一个示例代码,它支持使用OAuth2通过AMQP将消息发送到事件中心? 还是第三种方法 谢谢, V.关于您的挂起问题,我在原始帖子中发布

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

所以我的第二种方法是

  • 或者使用另一个依赖项(我也需要使用OAuth2)->不幸的是,我没有找到任何依赖项
  • 或者不要使用依赖项,而是通过自己发送消息来编写代码->这可能是一项艰巨的任务
您能向我推荐支持OAuth2的库吗?
或者是一个示例代码,它支持使用OAuth2通过AMQP将消息发送到事件中心?
还是第三种方法

谢谢,

V.

关于您的挂起问题,我在原始帖子中发布了一个新答案这将解决您的问题

现在回到这个问题,您主要应该遵循(使用事件中心V5SDK,使用生产者/消费者模式)

关于OAuth2的问题,很有可能利用AAD身份验证方法而不是共享访问签名(默认的连接字符串方法)。您可以遵循托管标识方案或基于自定义AAD应用程序的身份验证

关于OAuth2库的建议,Azure世界的第一方选择是无缝集成和支持

关于使用自定义代码编写整个过程的问题,虽然从技术上讲是可行的,但老实说,由于以下原因,投资于这项庞大的任务是非常不现实的:

  • 为什么要重新发明轮子
  • 这将增加您的维护头痛,因为大量的自定义代码只进行技术连接,但几乎不会为业务增加任何价值
  • 您将完全依靠自己来解决任何问题或未来的兼容性
  • 在代码中添加所有低级AMQP和OAuth处理会给团队增加不必要的负担,使其无法掌握这些内容
  • …最重要的是,这需要花费金钱和时间:)

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

    您好,感谢您的回复!我的想法(将消息发送机制重写到Azure)主要是出于绝望,因为我无法通过
    Azure eventhubs
    依赖项来规避悬而未决的问题。然而,你在我的另一篇文章中帮助了我(再次感谢!),并且你还推荐了一个更新的库,所以这个问题不再有效。我希望OAuth2也能与
    com.microsoft.azure:msal4j
    配合使用。谢谢谢谢是的,com.microsoft.azure:msal4j是MSAL的Java风格,MSAL是microsoft唯一支持Java的版本,在azure AD中适用于OAuth2。
    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();
        }
    }