我們已經在我們的Spring Boot應用程序中使用了Eureka幾個月了。我們啓用了使用@DiscoveryClient
註釋的應用程序之間的服務查找。註冊,續租和註銷按預期工作。使用Eureka作爲使用REST API的註冊表
最近,我們遇到了一個場景,我們有非Java應用程序組件(用C++編寫),它公開了許多Spring Boot Java應用程序將使用的3個REST服務端點。我們試圖查看C++組件是否可以在Eureka服務器的REST API出現時使用它來註冊自己,以便Spring Boot Java應用程序可以通過Eureka執行通常的查找來聯繫C++組件。由於我不能在C++組件中使用Eureka客戶端(顯然),我開始使用Postman測試直接REST API(如here所述)。通過使用POST方法向http://eurekaserver:8761/eureka/apps/FOO-APP發送JSON有效負載(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錯誤。
隨着實例Id:
{
"timestamp": 1447479397996,
"status": 404,
"error": "Not Found",
"message": "Not Found",
"path": "/eureka/apps/FOO-APP/1111"
}
OR(主機名相同的結果):
{
"timestamp": 1447479397996,
"status": 404,
"error": "Not Found",
"message": "Not Found",
"path": "/eureka/apps/FOO-APP/foo-app"
}
我嘗試不同的組合,但我不能做這項工作。我有一種感覺,我失去了一些明顯的東西 - 可能是小事。任何幫助,將不勝感激。
PS: Eureka REST端點文檔在URL中提到了「v2」。但是,這在我的情況下不起作用。註冊(適用於我)不使用上述的「v2」。如果有人可以驗證這一點,那也是有幫助的。這似乎沒有足夠的材料。
你有沒有考慮過使用邊車?它處理註冊,並且如果您的C++應用程序想要連接到其他已部署的服務,它也充當反向代理。您的應用程序只需要以預定義的格式顯示其健康狀態。 –
這是一個選項。但我試圖通過調用直接REST端點來實現這一點。我認爲cURL調用應該起作用。但他們沒有發生。 – Bloodysock
spring-cloud不包括v2。您可能使用了錯誤的instanceId。你使用的是什麼版本的春季雲?你是否在應用程序的某個地方設置了'instanceId'? – spencergibb