sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man konfigurerar Rebus för att ha ämnen baserade på hanterarens typ

Det finns några saker som verkar förvirrande med din fråga.

Men jag antar att din grundläggande fråga är hur man kan vara säker på att varje meddelande endast behandlas en gång av varje prenumerant.

Svaret är ganska enkelt:Ha en separat slutpunkt för varje abonnent - detta betyder att varje abonnent kommer att ha sin egen inmatningskö som meddelanden bearbetas från och som ett misslyckat meddelande kommer att returneras till.

Du kan då ha så många eller så få hanterare i varje abonnent som du vill. Alla kompatibla hanterare kommer att exekveras för varje inkommande meddelande.

Med Rebus, varje anrop till Configure.With(...).(...).Start() kommer att ge dig en separat slutpunkt - så i ditt fall föreslår jag att du slår in skapandet av abonnentens slutpunkt i en metod som du sedan kan anropa så här:

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();

// ...

där CreateSubscriber skulle då vara ungefär så här:

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



  1. MongoDB-prestandaproblem:En stor samling vs flera små samlingar

  2. returnera endast den sista nivån av den inbäddade egenskapen som söks i ett dokument

  3. mongo/node TypeError:återuppringning är inte en funktion vid fråga

  4. Min $push-metod i Mongoose fungerar inte ok