【问题标题】:Scaling NServicebus hosted in azure worker role and message order缩放托管在 azure worker 角色和消息顺序中的 NServicebus
【发布时间】:2012-11-15 21:29:01
【问题描述】:

我有一个 NServiceBus 端点托管在一个使用 AzureMessageQueue 作为传输的 Azure 辅助角色中。我很确定我将在 azure 中配置多个实例来运行辅助角色。我也有几条消息说顺序很重要。

这是我的问题。有没有办法通过这种类型的设置来控制顺序(azure worker 角色横向扩展)?

我应该看传奇吗?像下面描述的技术(使用 bus.send(object[] messages) 重载)将在这个模型中工作,我猜,但这只有在由于天蓝色队列的大小限制而有一些消息时才是理想的.

http://mikaelkoskinen.net/post/NServiceBus-In-order-message-processing.aspx

【问题讨论】:

    标签: nservicebus azure-worker-roles


    【解决方案1】:

    Bus.Send 批量发送将有所帮助,如果消息足够小,从消息队列配置读取批量大小也会有所帮助,您可以通过这种方式明确控制消息的顺序。批量发送将多个消息实例放入同一个物理队列消息中,而批量读取将一次性从队列中拉出多条物理消息并在节点上按顺序处理。

    另一个选择是同步消息处理程序中的读取,使用 blob 上的租约。请参阅 nsb timeoutmanager 的代码,了解如何使用它们进行同步,或查看 steve marx 的有关该主题的博客文章。 http://blog.smarx.com/posts/managing-concurrency-in-windows-azure-with-leases

    但请注意,azure 消息队列本身不保证订单,这是尽最大努力。如果要保证传输级别的顺序,则需要使用启用了消息排序的 Azure Servicebus Queues。

    亲切的问候, 伊夫

    【讨论】:

      猜你喜欢
      • 2013-04-19
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多