(Windows Azure)消息队列 - 在多台计算机上进行事件

时间:2011-07-27 10:13:04

标签: .net azure message-queue

我正在Windows Azure中构建一个应用程序,并且需要一些建议来向多个实例提供事件,这些实例又将它们推送到各自的事件订阅者。我在考虑使用消息队列(Azure队列存储)。

为了给出一些上下文,它是一个使用Comet实现将更改推送到客户端的Web应用程序。由于可扩展性要求,它需要在分布式环境中运行。这意味着客户端可以连接到不同的物理机器。

当用户进行某项更改时,需要将其推送给某些其他用户。

使用消息队列,所有Role实例都必须查看消息,但无法知道有多少角色查看了消息,因此删除队列的时间并不明显。我可以在计算角色数量的过程中实现某些功能,并在每次有人偷看时增加一些计数器。是否有某种默认的实现方式,我是否正确地采用它?

2 个答案:

答案 0 :(得分:3)

我认为Azure AppFabric Service Bus提供的Queue更适合这种情况。消息队列功能目前只是CTP,所以如果你可以使用它一段时间,直到生产就绪,我会看看。见http://vasters.com/clemensv/2011/05/16/Introducing+The+Windows+Azure+AppFabric+Service+Bus+May+2011+CTP.aspx

答案 1 :(得分:1)

我建议不要使用Azure Queues,因为它们根本无法正常工作。在我看来,正确的方法是使用AppFabric队列。

我在我的博客上写过他们(a short introduction to AppFabric queues)并且它还涵盖了我认为你需要的东西:订阅。为了给你一些背景信息,假设我们有两个零售店,一个仓库和一个审计应用程序。我们将创建一个主题(用于销售)和两个订阅,一个是仓库应用程序,另一个是审计应用程序。

当消息进入队列时,它会被“复制”到两个订阅中。因此,您的应用实例并不关心是否有其他人想要阅读该消息。如果他们有责任添加新订阅,

AppFabric的最终考虑因素是定价,目前定价是基于连接的,因此对于每个打开的AppFabric连接,您每月需要支付一定的费用(计费计算很复杂)。但是,我知道他们会将此更改为更易理解/更合理的事情,但没有更多细节。

总之,看看AppFabric队列,他们应该提供缺少的功能。