该版本仍在开发中,尚未被视为稳定。请使用最新的稳定版本,使用 Spring AMQP 4.0.0!spring-doc.cadn.net.cn

RabbitMQ REST API

启用管理插件后,RabbitMQ 服务器会暴露一个 REST API 以监控和配置代理。现在为该 API 提供了 Java 绑定。 这com.rabbitmq.http.client.Client是一个标准的、即时的,因此具有阻碍的API。它基于Spring Web模块及其Rest模板实现。 另一方面,com.rabbitmq.http.client.ReactorNettyClient是基于Reactor Netty项目的响应式、非阻塞实现。spring-doc.cadn.net.cn

此外,管理 REST API 可以与任何 HTTP 客户端一起使用。下一个示例演示了如何使用 WebClient 获取队列信息:spring-doc.cadn.net.cn

	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();
	}