几个月来,我们一直在使用 Eureka 和 Spring Boot 应用程序。我们已经使用@DiscoveryClient注释在应用程序之间启用了服务查找。注册、续租和注销都按预期进行。
最近,我们遇到了一个场景,我们有非 Java 应用程序组件(用 C++ 编写),它公开了我们的许多 Spring Boot Java 应用程序会使用的 3 个 REST 服务端点。我们正在尝试查看 C++ 组件是否可以利用 Eureka 服务器的 REST API 来注册自己,以便 Spring Boot Java 应用程序可以通过 Eureka 执行通常的查找以与 C++ 组件取得联系。
由于我不能在 C++ 组件中使用 Eureka 客户端(显然),我开始使用 Postman测试直接 REST API(如此处所述)。通过使用 POST 方法向http://eurekaserver:8761/eureka/apps/FOO-APP(instanceId = 1111 和 hostName = foo-app)发送 JSON 有效负载,注册工作没有任何问题。我可以查询http://eurekaserver:8761/eureka/apps并且可以看到 FOO-APP 按预期列在那里。
但是,当我尝试使用 DELETE 方法对http://eurekaserver:8761/eureka/apps/FOO-APP/1111或http://eurekaserver:8761/eureka/apps/FOO-APP/foo-app进行取消操作时,我收到 404 错误。
使用 instanceId:
{
"timestamp": 1447479397996,
"status": 404,
"error": "Not Found",
"message": "Not Found",
"path": "/eureka/apps/FOO-APP/1111"
}
或(主机名的结果相同):
{
"timestamp": 1447479397996,
"status": 404,
"error": "Not Found",
"message": "Not Found",
"path": "/eureka/apps/FOO-APP/foo-app"
}
我尝试了不同的组合,但我无法完成这项工作。我有一种感觉,我错过了一些明显的东西——可能是一些小东西。对此的任何帮助将不胜感激。
PS: Eureka REST 端点文档在 URL 中提到了“v2”。但是,这在我的情况下不起作用。注册(对我有用)不使用如上所述的“v2”。如果有人可以验证这一点,那也会有所帮助。似乎没有足够的材料来说明这一点。