来自Microsoft EventHub Java SDK示例(https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-java-get-started-send),这些步骤是通过Java SDK能够使用Even-Hub消息的步骤:
1。创建一个存储帐户
2。创建一个名为EventProcessorSample的新类。用创建事件中心和存储帐户时使用的值替换占位符:
3。
String consumerGroupName = "$Default";
String namespaceName = "----NamespaceName----";
String eventHubName = "----EventHubName----";
String sasKeyName = "----SharedAccessSignatureKeyName----";
String sasKey = "----SharedAccessSignatureKey----";
String storageConnectionString = "----AzureStorageConnectionString----";
String storageContainerName = "----StorageContainerName----";
String hostNamePrefix = "----HostNamePrefix----";
ConnectionStringBuilder eventHubConnectionString = new ConnectionStringBuilder()
.setNamespaceName(namespaceName)
.setEventHubName(eventHubName)
.setSasKeyName(sasKeyName)
.setSasKey(sasKey);
对于此流程,我有几件事不了解-
A。为什么需要一个存储帐户?为什么仅在创建使用者时才需要创建它,而在创建事件中心本身时却不需要创建它?
B。什么是“ hostNamePrefix”,为什么需要?
C。关于A的更多概括,但我无法理解为什么此流程如此复杂且需要如此多的配置。事件中心是从Azure导出指标/监视数据的默认且唯一的方法,这是非常简单的流程-Azure->事件中心-> Java应用程序。我想念一个更简单的方法还是一个更简单的客户端选项?
答案 0 :(得分:1)
您所有的问题都与使用事件中心的事件有关。
为什么需要一个存储帐户?
因此,如果您只想读取一次事件,则在使用事件中心的事件时,需要存储帐户存储偏移值。
为什么只有在创建使用者时才需要创建它,为什么不创建 创建事件中心本身时是什么?
根据情况而定,您是要仅一次读取还是每次每次读取事件,这就是您的应用启动的原因,因此创建事件时不需要存储帐户集线器。
什么是“ hostNamePrefix”?为什么需要?
名称如“ hostNamePrefix ”所示,这是您的主机的名称。主机表示正在使用事件的应用程序。并且,将GUID用作hostNamePrefix是一个好习惯。事件中心需要HostNamePrefix来管理与主机的连接。如果您有32个分区,并且已部署了同一应用程序的4个实例,则每个8个分区将分配给您的4个不同实例,在这里主机名可帮助事件中心管理有关连接的信息。各自的主机分区。
我建议您阅读this article on event hub,以清楚了解事件处理器主机。