Nifi:使用企业代理环境使用 Azure 事件中心

Nifi: Consume Azure Event Hub with an enterprise proxy environment

我在 Nifi 中有一个使用事件中心数据的用例。但是,Nifi 服务器位于代理后面。代理还需要用户名和密码进行授权。到目前为止,我发现 GetAzureEventHub 处理器可以完成这项工作,但它缺少完整的代理控制器服务。

我想知道在这种情况下最好的处理方法是什么。

有两种解决方法。默认情况下,Azure 事件中心客户端配置为使用名为 AMQP 的开放标准与服务通信。

AMQP 协议 a.k.a AMQPS 的安全版本分配的 IANA 端口是 5671。所以,这里是第一个选项:

  • 您将需要与您的管理员合作以允许端口 5671 上的流量并选择退出此流量的用户名-密码(又名 BASIC)身份验证。这是一个复杂的选项 - 但是,在技术上应该是可行的。

第二个选项,我猜是最实用的一个 - 在你的情况下:

  • 配置事件中心库以通过 WebSocketsAMQP 对话。在创建 EventHubClient 时,将 ConnectionStringBuilder 上的 TransportType 属性 设置为 AMQP_WEB_SOCKETS。这将允许您在所有代理都配置为 运行 的标准 HTTPS 端口上交谈 - WebSockets 使用。如果您在 java 进程级别配置 proxySettings,库已经理解它。我试图记录详细说明 here.

现在,您使用此方法会遇到的唯一限制是 - apache-nifi 使用和旧版本的 EventHubs 客户端(0.14.x), whereas, you will need1.2.0to be able to use theWebSockets over proxy`。

这 2 个版本之间有一些重大变化 - that we documented here - 这应该有助于您进行迁移。编码愉快!

more on Event Hubs...