Using Eureka as a registry using REST APIs

前端 未结 1 1356
再見小時候
再見小時候 2021-02-15 20:50

We have been using Eureka with our Spring Boot applications for few months now. We have enabled service lookup between applications using @DiscoveryClient annotatio

1条回答
  •  花落未央
    2021-02-15 21:21

    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.

    0 讨论(0)
提交回复
热议问题