我的问题是服务总线中的接收器如何监听新消息?它会在一段时间后向服务总线发送查询请求以获取任何新消息,或者服务总线是否将任何新消息推送到连接的接收器?
我使用的是.NET客户端库,默认使用SBMP协议。
答案 0 :(得分:1)
我的回答是指在AMQP上运行的Azure Service Bus SDK(链接 - > https://github.com/Azure/azure-service-bus-java)。
MessageReceiver对象用于在需要时从队列接收消息。
此类有一个接收函数,它将服务器等待时间作为参数(默认值为30秒)。
这意味着如果队列中没有消息,它将不会立即返回,而是等待30秒或您为新消息指定的任何时间。
如果之前有新消息,那么它将在此时返回。
这基本上称为长轮询。
它可以使客户端不再连续轮询队列。
答案 1 :(得分:1)
当您进行手动接收(或批量接收)时,它并不重要,因为服务器会向您提供您所请求的任何内容(或者如果它低于请求的数量,那么它会在那时提供什么)。如果您使用带回调的OnMessage API,无论传输如何,您都会在每条消息上获得回调调用,无论是推送还是拉动。通过客户端从代理轮询SBMP消息。有了AMQP,他们就会被经纪人推到客户端。