2012-06-28 35 views
9

Mam scenariusz, w którym mam serię procesów, które muszę wykonać, każdy krok jest wykonywany i skalowany w niezależnych aplikacjach. Używam wymiany tematów dla wszystkich giełd. Aktualny topologia jest coś takiego:RabbitMQ Wymiana tematów: 1 wymiana w porównaniu do wielu wymian

P -> X -> Q -> C/P -> X -> Q -> C

jesteśmy "wersjami" nasze kolejki do czynienia z prawdopodobnych wymagań zmienia dokonujące struktura wiadomości. Wiązania może wyglądać mniej więcej tak:

step1.exchange związany step1.v1.queue z wiążącym step1.v1 kluczowego

step1.exchange związany step1.v2.queue wiązanie kluczową step1.v2

Istnieją inne wzorce wiążące, które nie są związane z wersją, co powoduje również, że wymiany tematyczne są właściwym wyborem. Jednak moglibyśmy uciec tylko za pomocą jednej wymiany, aby osiągnąć to samo.

TLDR: Czy korzystanie z wielu wymian tematycznych może być korzystne zamiast jednej wymiany tematycznej, gdy przypadek użycia może działać w dowolny sposób?

+0

Dzięki @robthewolf. Korzystanie z oddzielnych wymian z pewnością pomaga w konceptualizacji, wyjaśnieniu i udokumentowaniu topologii. To oczywiście wymaga nieco więcej konfiguracji.Jestem bardzo zainteresowany również wpływem na wydajność. –

Odpowiedz

0

po prostu skopiować kilka kluczowych fragmentów dla Ciebie.
https://spring.io/blog/2011/04/01/routing-topologies-for-performance-and-scalability-with-rabbitmq/

  • Jeśli masz skończone domenę kluczy routingu wykresu danej aplikacji, a następnie wiele wymian Fanout może być prawo pasuje (1: 1 mapowanie zamian za klucz trasowanie)

  • Jeśli masz potencjalnie nieskończoną liczbę kluczy routingu, rozważ wymianę tematów:

  • W przypadku routingu tematu wydajność spada wraz ze wzrostem liczby powiązań

  • wymiany Fanout są bardzo szybko, ponieważ nie mają routing jeszcze proces, jeśli wiąże się z dużą liczbą kolejek, który zmienia

  • bezpośredniej wymiany są szybsze formą wymiany tematu, pod warunkiem, że nie potrzebują dziką kartę

  • Rozwiązywanie problemów całej 100,000 kolejek może być uciążliwe w porównaniu topologii z większą liczbą powiązań, mniej wymian i kolejek

  • bardzo wysoka liczba wymian i kolejkach zajmują więcej pamięci, która może być istotna, ale to naprawdę zależy

Od RabbitMQ 2.4.0, wydany 23 marca 2011, nowy algorytm optymalizacji temat routingu jest dostępny czyli 60 razy szybciej niż w szczycie poprzedniego algorytmu tematu. Z tego powodu zalecana jest mniejsza liczba wymian i kolejek oraz więcej tras, ponieważ czas jest teraz minimalny.