MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak skonfigurować Rebusa, aby tematy były oparte na typach obsługi

Jest kilka rzeczy, które wydają się mylące z Twoim pytaniem.

Ale myślę, że twoje podstawowe pytanie brzmi:jak mieć pewność, że każda wiadomość jest przetwarzana tylko raz przez każdego subskrybenta.

Odpowiedź jest dość prosta:miej osobny punkt końcowy dla każdego subskrybenta - oznacza to, że każdy subskrybent będzie miał własną kolejkę wejściową, z której wiadomości będą przetwarzane i do której zostanie zwrócona wiadomość, która się nie powiodła.

Możesz wtedy mieć tyle lub mniej handlerów w każdym subskrybencie, ile chcesz. Wszystkie kompatybilne procedury obsługi zostaną wykonane dla każdej wiadomości przychodzącej.

W Rebusie każde wywołanie Configure.With(...).(...).Start() da ci osobny punkt końcowy - więc w twoim przypadku sugeruję, abyś zawinął tworzenie punktu końcowego subskrybenta w metodę, którą możesz następnie wywołać w następujący sposób:

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

// ...

gdzie CreateSubscriber byłoby wtedy mniej więcej tak:

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zagregowany wynik MongoDB z dwoma różnymi kluczami

  2. Jak zrzucić całą bazę danych MongoDB jako text/json?

  3. Mongo $addToSet z wieloma wartościami poprawna składnia

  4. Zapytanie o podobną tablicę w MongoDB

  5. Wiosna Mongo DB @DBREF