消息如何从队列/订阅发送到接收者?

时间:2017-05-10 11:37:09

标签: azureservicebus servicebus

我的问题是服务总线中的接收器如何监听新消息?它会在一段时间后向服务总线发送查询请求以获取任何新消息,或者服务总线是否将任何新消息推送到连接的接收器?

我使用的是.NET客户端库,默认使用SBMP协议。

2 个答案:

答案 0 :(得分:1)

我的回答是指在AMQP上运行的Azure Service Bus SDK(链接 - > https://github.com/Azure/azure-service-bus-java)。

MessageReceiver对象用于在需要时从队列接收消息。

此类有一个接收函数,它将服务器等待时间作为参数(默认值为30秒)。

这意味着如果队列中没有消息,它将不会立即返回,而是等待30秒或您为新消息指定的任何时间。

如果之前有新消息,那么它将在此时返回。

这基本上称为长轮询。

它可以使客户端不再连续轮询队列。

答案 1 :(得分:1)

当您进行手动接收(或批量接收)时,它并不重要,因为服务器会向您提供您所请求的任何内容(或者如果它低于请求的数量,那么它会在那时提供什么)。如果您使用带回调的OnMessage API,无论传输如何,您都会在每条消息上获得回调调用,无论是推送还是拉动。通过客户端从代理轮询SBMP消息。有了AMQP,他们就会被经纪人推到客户端。