0

我只想从 Azure 事件中心读取一次事件,以便该事件只处理一次。但是在读取这些事件时,在所有分区中都会得到相同的事件。

Tech Stack - Spring boot 通过以下方式读取事件

EventProcessorHost host = EventProcessorHost.EventProcessorHostBuilder
            .newBuilder(EventProcessorHost.createHostName(hostNamePrefix), 
consumerGroupName)
            .useAzureStorageCheckpointLeaseManager(storageConnectionString, storageContainerName, null)
            .useEventHubConnectionString(eventHubConnectionString.toString(), eventHubName)
            .build();

谢谢。

4

1 回答 1

0

您可以在 Eventhub 上创建最多32分区,但是当您发送仅在单个分区上发送的消息时(如果您不放partition-id,Eventhub 会将消息发送到随机分区)

事件中心在配置的保留时间内保留数据,该保留时间适用于事件中心中的所有分区。事件按时间到期;您不能明确删除它们。因为分区是独立的并且包含它们自己的数据序列,所以它们通常以不同的速率增长。分区

您的代码可能有问题,要确认此行为,您可以使用 Microsoft ServiceBusExplorer从 Eventhub 发送和接收消息。当您通过服务总线创建 Eventhub 侦听器时,您可以实时接收分区 ID 和消息。

于 2020-03-30T11:05:38.140 回答