我试图深入了解客户端和RabbitMQ服务器之间的Push API通信是如何工作的。
据我所知 - 但在案件中纠正我 - 客户端打开与代理(RabbitMQ)的TCP连接并保持此连接存活,直到客户决定关闭它。但在此连接期间,客户端可以立即收到消息。
我的问题是,在此连接期间,客户端监视Broker向他询问消息,或者当Broker将消息转发到客户端订阅的Queue时,只需接受该连接并将数据推送到客户端?
第一种情况:客户端监视代理的消息
最后一种情况:客户端不需要监控代理,代理只是推送数据
或其他?
答案 0 :(得分:1)
接收消息有两种选择
客户端在频道上注册消费者回调(basicConsume
);然后经纪人推动"给消费者的消息。
客户端向代理发送basicGet
并收到一条消息(如果存在)。
第一个用例是最常见的。
由于您使用this标记了问题,我假设您在Spring中感兴趣。对于第一种情况,Spring AMQP有一个监听器容器(和@RabbitListener
注释);对于第二种情况,可以使用RabbitTemplate
接收操作之一。
我建议您查看spring-amqp以获得基本的理解。它们涵盖了几种语言,包括纯java和Spring AMQP。
您还可以查看tutorials。