【发布时间】:2017-08-10 15:23:04
【问题描述】:
我想确保我的消息均匀分布在服务总线的分区中。我们目前正在发送带有 sessionId 设置为 id.ToString() 的消息,其中 Id 是一个整数。但是,我想知道这是否足以很好地分发消息。据我所知,无法确认会话是如何分配的,因此无法对此进行测试。
我可以在此示例中看到会话 ID 的前缀为“会话”https://github.com/Azure/azure-service-bus/tree/master/samples/DotNet/Microsoft.Azure.ServiceBus/BasicSessionSendReceiveUsingQueueClient
这与我的问题是否巧合?或者如果我的 sessionId 将来自一个整数,这是我应该做的事情吗?这里的问题是,如果服务总线使用诸如服务结构的范围分区方案,那么彼此接近的整数值将被放置在同一个分区上。
编辑:具体来说,这个问题是关于确保消息在服务总线内的分区之间均匀分布(不是负载平衡竞争的会话消费者) - 我已经更新了这个问题以更好地反映这一点。
谢谢,
【问题讨论】:
-
示例中使用的前缀可以是“session”以外的任何值。会话 ID 用于标识会话。在分配负载方面,最大并发会话数乘以处理节点数将占用会话数。我猜剩下的是竞争消费者。
-
谢谢@SeanFeldman - 我的问题专门与服务总线中的分区之间的消息分布有关。不是跨消费者的会话分布。我认为这可以更普遍地应用于 PartitionKey 的使用。
标签: azureservicebus