加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 使用REST API将Eureka用作注册表

发布时间:2020-12-15 01:48:10 所属栏目:大数据 来源:网络整理
导读:几个月以来,我们一直在使用Eureka和我们的Spring Boot应用程序.我们已使用@DiscoveryClient注释在应用程序之间启用了服务查找.注册,续租和注销按预期进行. 最近,我们遇到了一个场景,我们有非Java应用程序组件(用C编写),它暴露了我们的许多Spring Boot Java应

几个月以来,我们一直在使用Eureka和我们的Spring Boot应用程序.我们已使用@DiscoveryClient注释在应用程序之间启用了服务查找.注册,续租和注销按预期进行.

最近,我们遇到了一个场景,我们有非Java应用程序组件(用C编写),它暴露了我们的许多Spring Boot Java应用程序将使用的3个REST服务端点.我们正在尝试查看C组件是否可以利用Eureka服务器的REST API在它出现时进行自我注册,以便Spring Boot Java应用程序可以通过Eureka执行常规查找以与C组件保持联系.

由于我不能在C组件中使用Eureka Client(显然),我开始使用Postman测试直接REST API(如here所述).通过使用POST方法将JSON有效负载发送到http://eurekaserver:8761/eureka/apps/FOO-APP(使用instanceId = 1111和hostName = foo-app),注册工作没有任何问题.我可以查询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"
}

OR(hostName的结果相同):

{
  "timestamp": 1447479397996,"path": "/eureka/apps/FOO-APP/foo-app"
}

我尝试了不同的组合,但我无法完成这项工作.我有一种感觉,我错过了一些明显的东西 – 可能是一些小事.任何有关这方面的帮助将不胜感激.

PS:Eureka REST端点文档在URL中提到“v2”.但是,这在我的情况下不起作用.注册(适用于我)不使用如上所述的“v2”.如果有人可以验证这一点,那也会有所帮助.这似乎没有足够的材料.

最佳答案
最后,我已经弄清楚如何使用Eureka服务器的REST URL调用取消操作.这适用于Spring Cloud Eureka服务器,但也适用于Netflix Eureka服务器.

取消操作的URL模式如下:

DELETE http://eureka_host:eureka_port/eureka/apps/

这是在Eureka REST operations页面上记录的方式,但是关于什么< instanceId>的清晰度很少.应该是.根据文档,< instanceId>是运行Eureka客户端的主机的主机名.这不起作用(IP地址或主机名).我尝试传入GET URL给我的相同值(例如,192.168.55.55)或localhost.那也行不通.我还尝试从GET输出传递instanceId值(这与eureka.instance.metadataMap.instanceId属性的值相同).那也没有用.我确实不得不尝试不同的组合来找到它. < instanceId>是主机名和实例ID的串联,用:分隔.例如,192.168.55.55:foo-app-some-random-str.

这是GET操作的示例输出,列出了在Eureka注册的活动实例:


在这种情况下,cancel cURL命令将如下所示:

$curl -X "DELETE" http://eureka_host:eureka_port/eureka/apps/FOO-APP/192.168.55.55:foo-app-f4ea7b06fc03a05a06900713f7526a5d

这将按预期取消注册实例.

也就是说,我必须承认我没有太多关注Eureka服务器日志.当您注册Eureka客户端时,日志打印出实例的完全限定名称(FOO-APP / 192.168.55.55:foo-app-f4ea7b06fc03a05a06900713f7526a5d),我可以将其用作我的猜测.

我希望有人在Eureka documentation修复此问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读