sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan konfigureres Rebus til at have emner baseret på handlers type

Der er et par ting, der virker forvirrende med dit spørgsmål.

Men jeg gætter på, at dit grundlæggende spørgsmål er, hvordan du kan være sikker på, at hver besked kun behandles én gang af hver abonnent.

Svaret er ret nemt:Hav et separat slutpunkt for hver abonnent - det betyder, at hver abonnent vil have sin egen inputkø, som meddelelser bliver behandlet fra, og som en mislykket meddelelse vil blive returneret til.

Du kan derefter have så mange eller så få behandlere i hver abonnent, som du vil. Alle kompatible behandlere vil blive udført for hver indkommende besked.

Med Rebus, hver påkaldelse til Configure.With(...).(...).Start() vil give dig et separat slutpunkt - så i dit tilfælde foreslår jeg, at du pakker oprettelsen af ​​abonnentslutpunktet ind i en metode, som du derefter kan påberåbe som denne:

var event1Subscriber = CreateSubscriber("subscriber_event1");
event1Subscriber.Subscribe<Event1>().Wait();

var event2Subscriber = CreateSubscriber("subscriber_event2");
event2Subscriber.Subscribe<Event2>().Wait();

var event3Subscriber = CreateSubscriber("subscriber_event3");    
event3Subscriber.Subscribe<Event3>().Wait();

// ...

hvor CreateSubscriber ville så være noget som dette:

public IBus CreateSubscriber(string queueName)
{
    return Configure.With(GetContainerAdapter())
        .Transport(t => t.UseMsmq(queueName))
        .Start();        
}



  1. MongoDB opdaterer felter i indlejret array

  2. Hvordan validerer man objektnøgler og værdier i Mongoose Schema?

  3. Laravel - Mongodb [ jenssegers/laravel-mongodb ] - Schema Builder

  4. Hvordan sender socket.io beskeder på tværs af flere servere?