MessagePack-RPC Java binding の Server の止め方

MessagePack-RPC Java版の Server が終了してくれないトラブルで20分ほどはまったのでメモ。

Server をデフォルトコンストラクタで起こして使ってると、close() を読んで止めたつもりでもスレッドが残ってプロセスが止まってくれません。

残ってるスレッドの正体は Server の中の EventLoop なので、Server を close() したあと、忘れずに EventLoop も shutdown() する必要があるようです。

Server server = new Server();
server.listen(port);
server.serve(stub);

server.close();
server.getEventLoop().shutdown();    // <- これを忘れるとプロセスが終了しない