代码之家  ›  专栏  ›  技术社区  ›  Viktor

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

  •  0
  • Viktor  · 技术社区  · 4 年前

    我的第一个方法是使用 com.microsoft.azure:azure-eventhubs:3.2.0 但我有以下问题: Client hangs when calling Azure Event Hub and facing connection error

    • 或者使用另一个依赖项(我也需要使用OAuth2)->不幸的是,我没有找到任何依赖项
    • 或者不要使用依赖项,而是编写消息代码发送给自己->这可能是一项艰巨的任务

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


    五。

    0 回复  |  直到 4 年前
        1
  •  1
  •   krishg    4 年前

    关于你的悬空问题,我在原来的帖子里贴了一个新的答案 Client hangs when calling Azure Event Hub and facing connection error . 那会解决你的问题 .

    现在回到这个问题,首先你应该遵循 latest tutorial

    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 对于托管身份方案或 this tutorial 用于自定义基于AAD应用程序的身份验证。

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

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

    1. 这将增加您的维护头痛的地狱很多自定义代码只做技术布线,但几乎没有增加任何价值的业务。
    2. 您几乎可以自己找出任何问题或未来的兼容性。
    3. 在代码中添加所有低级别的AMQP和OAuth处理将给您的团队增加不必要的负担来掌握它们。
    4. ……最重要的是,这需要花费金钱和时间:)

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