.リアルタイム・オフライン・サービス
サービスを直接停止します。デフォルトでは、Eureka Serverが90秒以内にEurekaクライアントから更新を受け取らなかった場合、インスタンスをレジストリから削除します。しかし、この方法の悪い点は、クライアントの実行が停止しているにもかかわらず、レジストリにリストされたままになっていることです。 特定のロードバランシングポリシーやヒューズを使用してサービスを継続することは可能ですが、サービスがオフラインになったことをレジストリにすぐに知らせる方法はありますか?
eurekaレジストリに削除リクエストを送信します。
postmanを使った削除リクエストの開始
http://...:///-/:-:31
注意:Eurekaクライアントは、レジストリにハートビートを送信し、頻繁に契約を更新します。このようにしてオフラインになったサービスが、時間内に停止しなかった場合、そのサービスはすぐにサービスのリストに戻ります。
そのため、サービスを停止してから、リストから削除するリクエストを送ることができます。
- クライアントがレジストリのオフラインをプロアクティブに通知
eurekaクライアントがSpringBootアプリケーションの場合、以下のコードを呼び出すことでレジストリがオフラインになることを通知できます。をフックすることでグレースフル・シャットダウンを実装できます。
DiscoveryManager.getInstance().shutdownComponent();
@RestController
public class HelloController {
@Autowired
private DiscoveryClient client;
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String index() {
java.util.List<ServiceInstance> instances = client.getInstances("hello-service");
return "Hello World";
}
@RequestMapping(value = "/offline", method = RequestMethod.GET)
public void offLine(){
DiscoveryManager.getInstance().shutdownComponent();
}
}