Je souhaite m'assurer que mes messages sont distribués uniformément entre les partitions du bus de service. Nous avons actuellement des messages qui sont envoyés avec un sessionId défini sur id.ToString() où Id est un entier. Cependant, je me demande si cela suffirait à bien distribuer les messages. Pour autant que je sache, il n'y a aucun moyen de confirmer comment les sessions sont distribuées, donc pas moyen de tester cela.Qu'est-ce que l'algorithme de routage des messages de partition dans le bus de service azure
Je peux voir dans cet exemple que Ids session sont préfixés par « session » https://github.com/Azure/azure-service-bus/tree/master/samples/DotNet/Microsoft.Azure.ServiceBus/BasicSessionSendReceiveUsingQueueClient
Est-ce quelque chose à ma question pure coïncidence? Ou est-ce quelque chose que je devrais faire Si mon sessionId sera dérivé d'un entier? Le problème ici est que si le bus de service utilise un schéma de partitionnement à distance tel que celui du fabric de service, les valeurs entières proches les unes des autres seront placées sur la même partition.
EDIT: pour être précis, cette question consiste à s'assurer que les messages sont distribués uniformément sur les partitions du bus de service (pas d'équilibrage de charge des consommateurs) - J'ai mis à jour la question pour mieux refléter cela.
Merci,
Le préfixe utilisé dans l'échantillon peut être n'importe quelle valeur autre que "session". L'ID de session est utilisé pour identifier une session. En termes de distribution de la charge, le nombre de sessions simultanées multipliées par le nombre de nœuds de traitement est ce qui va prendre les sessions. Le reste est des consommateurs concurrents, je suppose. –
Merci @SeanFeldman - ma question se rapporte spécifiquement à la distribution des messages à travers les partitions dans le bus de service .. pas la distribution des sessions à travers les consommateurs. Je pense que cela peut être appliqué plus généralement à l'utilisation de PartitionKey. –