2012-07-31 142 views
4

我已经看到大多数队列示例作为轮询机制。是否有可能将其更改为队列列表器。因为投票可能会影响工作人员的表现。将列表程序写入Azure队列

+0

“因为投票可能会影响工作人员的表现” - 真的吗?你多久计划一次投票?你能分享更多关于你遇到的性能问题吗? – smarx 2012-07-31 15:59:55

+0

@smarx会不会影响性能,因为我们使用的资源是不必要的。但你的问题是有效的,我会做一个性能运行。但要注意的是,我们正在与队列进行http呼叫。 – satish 2012-08-01 04:51:21

回答

12

Windows Azure存储队列和Windows Azure服务总线队列都使用轮询,并且本身没有通知功能;但是,Windows Azure服务总线队列确实支持长轮询,这与您当前可以获得的通知方法非常接近。当您使用MessageReceiver的Receive方法时,它将使用长轮询(意味着它会请求一条消息,如果队列中没有一个服务器不会立即响应,但会等待一段时间,直到消息到达当它响应客户端时,或者直到空闲时间过去,在这种情况下,它将返回一个没有消息的响应。Receive方法本身会给人一种同步调用的印象来获取消息,并且不会返回直到出现一条消息,但它有重载以允许空闲时间,所以你不会进入无限等待)。

服务总线您可以设置为订阅服务的主题,但您仍然在轮询该主题以获取您的消息,所以我不认为这是OP要求的核心。

+0

但是,如果我们有listner会很好。任何想法,如果这在MS连接可用.else我可以添加一个连接错误 – satish 2012-07-31 10:14:50

+0

我不知道当前的全面通知功能的请求。 – MikeWo 2012-07-31 10:18:24

2

使用Windows Azure队列,您唯一的选择是轮询。与Service Bus Topics/Subscription一样,您可以拥有完整的发布/订阅模型,订阅者将成为“听众”。

+2

但是,您仍然会在服务总线主题上轮询该主题以检索您的消息。订阅模型只需让您有一个入站队列消息的多个目标,并加上过滤;然而,最终,听众(或消费者)仍然在为他们的消息轮询他们各自的主题。 – MikeWo 2012-07-31 10:12:17