(Windows Azure) 消息队列 - 多台机器上的事件

Posted

技术标签:

【中文标题】(Windows Azure) 消息队列 - 多台机器上的事件【英文标题】:(Windows Azure) Message Queues - Eventing over multiple machines 【发布时间】:2011-10-14 03:15:52 【问题描述】:

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

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

当用户做出特定更改时,需要将其推送给其他特定用户。

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

【问题讨论】:

对我来说,这听起来像是 azure service bus 的工作。 【参考方案1】:

我认为 Azure AppFabric 服务总线提供的队列更适合这种情况。消息队列功能目前只有 CTP,所以如果你能忍受一段时间,直到它准备好生产,我会看看那个。见http://vasters.com/clemensv/2011/05/16/Introducing+The+Windows+Azure+AppFabric+Service+Bus+May+2011+CTP.aspx

【讨论】:

【参考方案2】:

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

我已经在我的博客上写过 (a short introduction to AppFabric queues),它还涵盖了我认为您需要的内容:订阅。为了给您一些背景信息,假设我们有两家零售店、一个仓库和一个审计应用程序。我们将创建一个Topic(用于销售)和两个订阅,一个是仓库应用程序,另一个是审计应用程序。

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

AppFabric 的最终考虑因素是定价,目前定价是基于连接的,因此对于每个打开的 AppFabric 连接,您每月都会收取一定的费用(计费计算非常复杂)。但是,我知道事实上他们会将其更改为更易于理解/合乎逻辑的内容,但没有更多细节。

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

【讨论】:

你的博客链接失效了 不幸的是我的前雇主。我会看看我是否还有原始文章并将其上传到我的个人博客。

以上是关于(Windows Azure) 消息队列 - 多台机器上的事件的主要内容,如果未能解决你的问题,请参考以下文章

Azure 服务总线队列以并行方式异步处理消息

Windows Azure 自动缩放

是否可以使用 Azure 资源管理器 API 向队列或主题发送和检索消息

使用 Windows Azure 的基于消息的体系结构

天蓝色存储队列中的最大出队数

从 Azure 函数将消息写入 Azure 服务总线队列