RabbitMQ REST API
当启用管理插件时,RabbitMQ 服务器会暴露一个 REST API 来监控和配置代理。现在提供了一个 Java API 绑定。com.rabbitmq.http.client.Client 是一个标准的、即时的,因此是阻塞的 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("https://: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();
}