We have been using Eureka with our Spring Boot applications for few months now. We have enabled service lookup between applications using @DiscoveryClient
annotatio
Finally, I have figured out how the cancel
operation can be invoked using REST URLs of a Eureka server. This works for Spring Cloud Eureka server, but should also work for the Netflix Eureka server.
The URL pattern for the cancel
operation is as the following:
DELETE http://eureka_host:eureka_port/eureka/apps//
This is how it is documented at the Eureka REST operations page, but there's very little clarity as to what
was supposed to be. As per the documentation,
is the hostname of the host that runs the Eureka client. That did not work (IP address or host name). I tried passing in the same value that the GET
URL gave me (for example, 192.168.55.55) or localhost
. That did not work either. I also tried passing in the instanceId
value from the GET
output (which would be the same as the value of eureka.instance.metadataMap.instanceId property). That too, didn't work. I literally had to try different combinations to find this out. The
is the concatenation of the hostname and instance ID, separated by :
. For example, 192.168.55.55:foo-app-some-random-str
.
Here's an example output of the GET
operation listing the active instance registered with Eureka:
192.168.55.55
FOO-APP
...
foo-app-f4ea7b06fc03a05a06900713f7526a5d
...
In this case, the cancel
cURL command would look like this:
$ curl -X "DELETE" http://eureka_host:eureka_port/eureka/apps/FOO-APP/192.168.55.55:foo-app-f4ea7b06fc03a05a06900713f7526a5d
That would de-register the instance as expected.
That said, I must confess that I wasn't paying much attention to the Eureka server logs. When you register the Eureka client, the log printed out the fully qualified name of the instance (FOO-APP/192.168.55.55:foo-app-f4ea7b06fc03a05a06900713f7526a5d
), which I could have used as my guess.
I hope someone fixes this in the Eureka documentation.