所以我们最近一直在研究 Azure 服务总线,对于是否应该使用无限循环来轮询队列/订阅还是应该使用 OnMessage 回调/消息泵功能,我们有点困惑。什么会执行更少的操作,从而降低成本?
理想情况下,我们想要一个事件驱动的系统,这样我们就不会浪费操作,而且它通常是一种更好的方法。
我的问题是,使用 OnMessage 定义为“在事件驱动的消息泵中处理消息”真的是事件驱动的吗?
如果您查看此页面(QueueClient.OnMessage):https ://msdn.microsoft.com/library/azure/microsoft.servicebus.messaging.queueclient.onmessage.aspx您会注意到底部的注释它基本上是调用 Receive() 方法的无限循环的包装器。对我来说,这听起来不太受事件驱动。
现在,如果您查看此页面(SubscriptionClient.OnMessage): https ://msdn.microsoft.com/en-us/library/azure/dn130336.aspx ,则不存在该注释。那么主题/订阅和队列是否相同,或者它实际上是事件驱动的订阅而不是队列?
为什么他们甚至说它是事件驱动的,而它显然不是?QueueClient.OnMessage 页面上的注释有“无限循环”和“每个接收操作都是计费事件”的事实有点吓人。
此外,我并不真正关心无论哪种方式都会花费多少/很少,我更感兴趣的是使其尽可能高效。