2017-08-24 1 views
0

Je dispose d'un système de multi-location et je dois garantir le traitement FIFO (premier entré, premier sorti) des messages en file d'attente par le locataire, c.-à-d. Chaque locataire obtiendra le sien MaxConcurrentCalls = 1.Concurrence de file d'attente de contrôle par un locataire dans un système de multi-location

A faire en Azure et la technologie n'est pas corrigée.

Je sais que cela peut être réalisé en créant un WebJob distinct pour chaque client hébergé, mais cela limite l'évolutivité.

Existe-t-il d'autres moyens d'obtenir un tel comportement?

Répondre

2

Puisque vous avez mentionné Service Bus, je suggère

  • utiliser le service Queues Bus ou sujets avec sessions ont permis
  • identifiants de session Affecter en fonction de locataire ID

De cette façon, vous devriez être en mesure de traiter les messages un-par-un et en ordre par locataire, mais plusieurs locataires en parallèle.

+0

+1 Notez qu'avec cette approche vous seriez en mesure d'évoluer pour un nombre croissant de locataires. Par locataire, il n'y aura qu'un seul consommateur (limitation connue lors du traitement des messages avec des sessions). –

+0

Cela semble être la bonne approche, mais Microsoft est derrière sur toutes les demandes de fonctionnalités pour cela sur WebJobs et fonctions (je vous vois dans la discussion github). Où lancez-vous votre code? VM/WorkerRole ou l'avez-vous dans WebJobs? –

+0

@BenjaminE. Nous exécutons Web Jobs sans utiliser les déclencheurs SDK Web Job. Juste une console de lecture des sessions de lecture elle-même. – Mikhail