扩展以天蓝色工作者角色和消息顺序托管的NServicebus

时间:2012-11-15 21:29:01

标签: nservicebus azure-worker-roles

我使用AzureMessageQueue作为传输,在Azure工作者角色中托管NServiceBus端点。我很确定我将在azure中配置多个实例来运行辅助角色。我也有一些消息,订单很重要。

这是我的问题。有没有办法通过这种类型的设置来控制订单(天蓝色工人角色被缩小)?

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

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

1 个答案:

答案 0 :(得分:0)

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

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

但请注意,azure消息队列不保证自己订购,这是最好的努力。如果要保证传输级别的订单,则需要使用Azure Servicebus队列并启用消息排序。

亲切的问候, 伊夫