AMQP、RabbitMQ Push API 是如何工作的?

AMQP, RabbitMQ Push API how works?

我试图深入了解客户端和 RabbitMQ 服务器之间的 Push API 通信是如何工作的。

据我所知 - 但请纠正我以防万一 - 客户端打开到代理 (RabbitMQ) 的 TCP 连接并保持此连接有效,直到客户端决定关闭它。但在此连接期间,客户端可以立即收到消息。

我的问题是,在这个连接过程中,客户端是监听Broker向他要消息,还是当Broker转发消息到客户端订阅的Queue时,就拿那个连接,把数据推送到客户端?

第一种情况:客户端监控代理的消息

最后一种情况:client不需要监控broker,broker只是推送数据

或其他?

接收消息有两种选择

  1. 客户端在频道上注册消费者回调(basicConsume);然后经纪人 "pushes" 向消费者发送消息。

  2. 客户端向代理发送 basicGet 并接收一条消息(如果存在)。

第一个用例最常见。

由于您用 标记了问题,我假设您对 Spring 感兴趣。对于第一种情况,Spring AMQP 有一个监听器容器(和 @RabbitListener 注解);对于第二种情况,可以使用 RabbitTemplate 接收操作之一。

我建议您查看 tutorials 以获得基本的了解。它们涵盖多种语言,包括纯 java 和 Spring AMQP。

你也可以看看Spring AMQP Reference Manual.