Mamy aplikację, która będzie używała RabbitMQ i ma kilka różnych kolejek do przekazywania wiadomości między poziomami.Wymiana tematów a bezpośrednia wymiana w RabbitMQ
Początkowo planowałem użyć wielu bezpośrednich wymian, z których jedna dla każdego typu komunikatu, ale wygląda na to, że posiadanie jednej wymiany tematów z kolejkami przy użyciu różnych wiązań klawiszy spowoduje osiągnięcie tego samego.
Posiadanie pojedynczej giełdy również wydaje się być nieco łatwiejsze w utrzymaniu, ale zastanawiałem się, czy istnieje jakakolwiek korzyść (jeśli w ogóle) z robienia tego w jedną stronę z drugą?
opcji 1, przy użyciu wielu bezpośrednia wymiana:
ExchangeA (type: direct)
-QueueA
ExchangeB (type: direct)
-QueueB
ExchangeC (type: direct)
-QueueC
Wariant 2, wykorzystując pojedynczą wymianę Wątek:
Exchange (type: topic)
-QueueA (receives messages from exchange with routing key of "TypeA")
-QueueB (receives messages from exchange with routing key of "TypeB")
-QueueC (receives messages from exchange with routing key of "TypeC")
Zgadzam się. Wiele kolejek z odpowiednimi klawiszami routingu jest znacznie łatwiejszych w zarządzaniu. Jedyną zaletą opcji 1, która przychodzi na myśl, jest to, że wiele central może być hostowanych na oddzielnym sprzęcie, tym samym uzyskując pionowe skalowanie. Jeśli jednak twój sprzęt będzie się skalał, możesz nigdy nie potrzebować tej trasy. –
Myślę, że zaletą używania tematu jest to, że jeśli w przyszłości będziesz musiał wysłać tę samą wiadomość do wielu kolejek w swojej giełdzie, twoja opcja 2 byłaby bardziej pożądana. – gigi2