2017-10-05 136 views
0

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

据我所知 - 但纠正我的情况下 - 客户端打开一个TCP连接到代理(RabbitMQ),并保持这个连接活着,直到客户决定关闭它。但在此连接期间,客户端可以立即获取消息。

我的问题是,在这个连接期间,客户端监视代理以询问他的消息,或者当代理将消息转发给队列,客户端订阅时,只需要连接并将数据推送到客户?

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

最后一种情况的券商:客户端不需要监视经纪人,经纪人只是把数据

或其他?

+0

如果你真的想得到关于AMPQ如何工作的正确见解,我强烈建议从[阅读规格]开始(http://docs.oasis-open.org/amqp/core/v1.0/amqp- core-complete-v1.0.pdf),而不是试图想象这个事情可能会如何工作...... – fvu

回答

1

有两种选择来接收消息

  1. 客户端注册的信道上的消费者回调(basicConsume);经纪人然后“推”消息给消费者。

  2. 客户端发送经纪人basicGet并收到一条消息(如果存在)。

第一个用例是最常见的。

既然你用来标记问题,我假设你在Spring中很有趣。对于第一种情况,Spring AMQP有一个监听器容器(和@RabbitListener注释);对于第二种情况,可以使用RabbitTemplate接收操作之一。

我建议你看看tutorials以获得基本的了解。它们涵盖了几种语言,包括纯Java和Spring AMQP。您也可以查看Spring AMQP Reference Manual