sql >> Database >  >> NoSQL >> MongoDB

Hoe Rebus te configureren om onderwerpen te hebben op basis van het type handlers

Er zijn een paar dingen die verwarrend lijken met uw vraag.

Maar ik denk dat uw fundamentele vraag is hoe u er zeker van kunt zijn dat elk bericht slechts één keer door elke abonnee wordt verwerkt.

Het antwoord is vrij eenvoudig:zorg voor een apart eindpunt voor elke abonnee - dit betekent dat elke abonnee zijn eigen invoerwachtrij heeft waaruit berichten worden verwerkt en waarnaar een mislukt bericht wordt teruggestuurd.

U kunt dan zo veel of zo weinig handlers in elke abonnee hebben als u wilt. Alle compatibele handlers worden uitgevoerd voor elk binnenkomend bericht.

Met Rebus, elke aanroep van Configure.With(...).(...).Start() zal je een apart eindpunt geven - dus in jouw geval raad ik je aan om het aanmaken van het eindpunt van de abonnee in een methode in te pakken, die je dan als volgt kunt aanroepen:

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

// ...

waar CreateSubscriber zou dan ongeveer zo zijn:

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



  1. Hoe te controleren of Mongo db op Mac draait?

  2. Mongodb 1op1 relatie tussen subdocumenten

  3. Tellen in Spring Data MongoDB-repository

  4. De complexiteit van MongoDB-aggregatiequery's evalueren:kosten van $ lookup