Jersey ClientのRxサポートを軽〜く試す
Jersey 2.13がリリースされました。
リリースノートを見ると [JERSEY-2639] - Jersey Client - Add Support for Rx というのがあったので試してみましたん。
pom.xmlに突っ込むdependency
- jersey-rx-client-guava
- jersey-rx-client-java8
- jersey-rx-client-jsr166e
- jersey-rx-client-rxjava
があるっぽいですがRxJavaとかよく分かんないので今回はjava8で試します。
<dependency>
<groupId>org.glassfish.jersey.ext.rx</groupId>
<artifactId>jersey-rx-client-java8</artifactId>
</dependency>
クライアントコード
名前を渡したらこんにちは言ってくれるいつものリソースクラスがあったとします。
まずはふつうのJAX-RSクライアントのコード。
WebTarget target = ClientBuilder.newClient().target("http://localhost:8080/rest/hello");
String resp = target.queryParam("name", "world")
.request()
.get(String.class);
System.out.println(resp); //Hello, world!
うむ。普通。
次にRx板のコードです。
WebTarget target = ClientBuilder.newClient().target("http://localhost:8080/rest/hello");
CompletionStage<String> stage = RxCompletionStage.from(target)
.queryParam("name", "world")
.request()
.rx()
.get(String.class);
stage.thenAccept(s -> System.out.println(s)); //Hello, world!
ご覧の通り CompletionStage であれこれできるっぽいです。
まとめ
RxJava学ぼうかな。