我在Nifi中有一个用例,可以使用Event Hub中的数据。但是,Nifi服务器位于代理后面。代理还需要用户名和密码进行授权。到目前为止,我发现GetAzureEventHub
处理器可以完成这项工作,但是它缺乏完整的代理控制器服务。
我想知道在这种情况下最好的方法是什么。
答案 0 :(得分:4)
有两种解决方法。默认情况下,Azure Event Hubs客户端配置为使用称为AMQP的开放标准与服务进行通信。
为IANA
协议(又称为AMQP
)的安全版本分配的AMQPS
端口是5671
。因此,这里是第一个选择:
5671
上的流量,并为此流量选择退出用户名密码(aka BASIC)身份验证。这是一个复杂的选择-但在技术上应该可行。第二种方法,我猜是最实用的一种方法-
AMQP
进行WebSockets
对话。创建EventHubClient
时,请将TransportType
的{{1}}属性设置为ConnectionStringBuilder
。这将允许您在标准HTTPS端口上进行讨论,所有代理都配置为与标准HTTPS端口一起运行-AMQP_WEB_SOCKETS
使用。如果在Java进程级别配置WebSockets
,则该库已经可以理解。我试图记录详细说明here。现在,使用此方法的唯一局限性是-proxySettings
使用较旧版本的EventHubs客户端(apache-nifi
1.2.0 0.14.x), whereas, you will need
WebSockets over proxy`。>
这两个版本之间有一些重大更改- that we documented here-应该可以帮助您进行迁移。编码愉快!