eureka.instance.instance-id 和 eureka.instance.metadataMap.instanceId 有什么区别?

What is the difference between eureka.instance.instance-id and eureka.instance.metadataMap.instanceId?

eureka.instance.instance-ideureka.instance.metadataMap.instanceId有什么区别?我在同一主机 (localhost) 上 运行 2 个相同服务的实例并拥有唯一的 instanceId,我尝试了 eureka.instance.instance-id 和 eureka.instance.metadataMap.instanceId。这两个属性都运行良好,并且服务实例已成功注册到尤里卡服务器。

我在下面 post 找到了两个选项

how to create multiple instances of eureka services registered into eureka service registry?

那么,它们之间有什么区别,我应该在哪里使用这些属性?

没有这样的。我们可以同时使用 :).

当尤里卡服务器在注册客户端时询问 instanceId 时,它得到的是 -

@Override
public String getInstanceId() {
    if (this.instanceId == null && this.metadataMap != null) {
        return this.metadataMap.get("instanceId");
    }
    return this.instanceId;
}

因此,如果您使用 eureka.instance.instance-id 设置它,它 returns 相同,否则它会尝试从元数据中找到 instanceId(使用 eureka.instance.metadataMap.instanceId 设置)。

您可以查看EurekaInstanceConfigBean class了解更多详情。