我们最近通过遵循azure-博士部署了azure事件-hub java接收器/侦听器客户端。
我真的相信数组从0开始,但这与这个问题无关。因此,无论如何,我注意到以下从processError引发的错误&也就是processPartitionClose
Error occurred in partition14 - connectionId[MF_5fba9c_1636350888640] sessionName[eventhub-name/ConsumerGroups/consumer-group-name/Partitions/14] entityPath[eventhub-name/ConsumerGroups/consumer-group-name/Partitions/14] linkName[14_500701_1636350888641] Cannot create receive link from a closed session., errorContext[NAMESPACE: namespace.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: eventhub-name/ConsumerGroups/consumer-group-name/Partitions/14]
ERROR | Partition has been lost 14 reason LOST_PARTITION_OWNERSHIP问题:
这是我们用示例代码安装的sdk
EventProcessorClientBuilder eventProcessorClientBuilder = new EventProcessorClientBuilder()
.checkpointStore(new BlobCheckpointStore(blobContainerAsyncClient))
.connectionString(getEventHubConnectionString(), getEventHubName())
.consumerGroup(getConsumerGroup())
.initialPartitionEventPosition(initialPartitionEventPosition)
.processEvent(PARTITION_PROCESSOR)
.processError(ERROR_HANDLER)
.processPartitionClose(CLOSE_HANDLER);
EventProcessorClient eventProcessorClient = eventProcessorClientBuilder.buildEventProcessorClient();
// Starts the event processor
eventProcessorClient.start();
private final Consumer < ErrorContext > ERROR_HANDLER = errorContext->{
log.error("Error occurred in partition" + errorContext.getPartitionContext().getPartitionId()
+ " - " + errorContext.getThrowable().getMessage());
};
private final Consumer < CloseContext > CLOSE_HANDLER = closeContext->{
log.error("Partition has been lost " + closeContext.getPartitionContext().getPartitionId()
+ " reason " + closeContext.getCloseReason());
EventContext lastContext = lastEvent.get();
if (lastContext != null && (lastContext.getEventData().getSequenceNumber() % 10) != 0) {
lastContext.updateCheckpoint();
}
};jdk : 1.8
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-messaging-eventhubs-checkpointstore-blob</artifactId>
<version>1.10.0</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-messaging-eventhubs</artifactId>
<version>5.10.1</version>
</dependency>我确实遇到过集邮中心-15164期,但在任何地方都找不到。
发布于 2021-11-30 09:03:15
azure-sdk-for-java sdk甚至会自动在这样的分区上重新连接吗?
是的,EventProcessorClient在azure-messaging-eventhubs库中将在这样的分区上重新连接。你不需要手动改变任何东西。
如果有多个运行EventProcessorClient的实例,并且它们都处理来自同一个事件集线器的事件,并且使用相同的使用者组,那么您将在一个处理器上看到这个LOST_PARTITION_OWNERSHIP错误,因为另一个处理器可能已经声明了一个分区的所有权。检查点从检查点存储区读取(上面代码示例中的Storage),然后从下一个序列号开始处理。
请参考分区所有权和检查点了解更多详细信息。
https://stackoverflow.com/questions/69908654
复制相似问题