このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring AMQP 3.2.5 を使用してください! |
RabbitMQ REST API
管理プラグインが有効になっている場合、RabbitMQ サーバーは REST API を公開して、ブローカーを監視および構成します。API の Java バインディング [GitHub] (英語) が提供されるようになりました。com.rabbitmq.http.client.Client
は標準の即時型 API であり、ブロッキング API です。これは、Spring Web モジュールとその RestTemplate
実装に基づいています。一方、com.rabbitmq.http.client.ReactorNettyClient
は、Reactor Netty (英語) プロジェクトに基づくリアクティブでノンブロッキングの実装です。
また、管理 REST API (英語) は任意の HTTP クライアントで使用できます。次の例は、WebClient を使用してキュー情報を取得する方法を示しています。
public Map<String, Object> queueInfo(String queueName) throws URISyntaxException {
WebClient client = createClient("admin", "admin");
URI uri = queueUri(queueName);
return client.get()
.uri(uri)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(new ParameterizedTypeReference<Map<String, Object>>() {
})
.block(Duration.ofSeconds(10));
}
private URI queueUri(String queue) throws URISyntaxException {
URI uri = new URI("http://localhost:15672/api/")
.resolve("/api/queues/" + UriUtils.encodePathSegment("/", StandardCharsets.UTF_8) + "/" + queue);
return uri;
}
private WebClient createClient(String adminUser, String adminPassword) {
return WebClient.builder()
.filter(ExchangeFilterFunctions.basicAuthentication(adminUser, adminPassword))
.build();
}