RabbitMQ ma bardzo elastyczny model, który umożliwia różnorodne scenariusze routingu się odbyć.
- Potrzebuję podzielić wiadomość do niektórych kolejki. za ciężką pracę. Mogę dla nich dodać więcej wątków roboczych.
Tak, jest to obsługiwane przez bezpośrednią wymianę. Opublikuj wiadomość, używając klucza routingu, który jest taki sam jak nazwa kolejki. Dla wygody powiedzmy, że używasz w pełni kwalifikowanej nazwy obiektu (np. MyApp.Objects.DataTypeOne
). Wszystko, co musisz zrobić, to zasubskrybować wiele procesów zużywających się w tej kolejce, a RabbitMQ wyładuje saldo, stosując podejście typu round-robin.
- Ale dla niektórych nie ma dużo ciężkiej pracy. Mogę pozwolić pojedynczemu konsumentowi na subskrybowanie ich wiadomości.
Tak, możesz to również zrobić. Ten sam proces, co w powyższym akapicie. Po prostu nie dołączaj wielu procesów konsumujących.
Znalazłem ten obraz jest bardzo podobny do mojego modelu biznesowego.
Schemat nie jest zbyt użyteczny, ponieważ brakuje mu informacji o typie publikowanych wiadomości. W tym sensie jest to tylko schemat połączeń międzysieciowych. Ciekawymi liniami są te, które łączą kolejki z giełdą, ponieważ to właśnie określasz w RabbitMQ przez Queue Bindings. Możesz również powiązać wymiany ze sobą, ale to trochę dalej niż prawdopodobnie musimy iść.
Cała reszta na diagramie jest w pełni pod Twoją kontrolą jako użytkownik systemu RabbitMQ/AMQP. Możesz utworzyć dowolną liczbę wydawców i mieć dowolną liczbę zużywających się procesów, które zużywają z dowolnej liczby kolejek. Nie ma żadnych twardych i szybkich ograniczeń, chociaż są pewne praktyczne aspekty, o których prawdopodobnie będziesz chciał pomyśleć, aby upewnić się, że twój system jest obsługiwany.
Zapoznaj się z samouczkami [Getting Started] (http://www.rabbitmq.com/getstarted.html). Kiedy po raz pierwszy spojrzałem na RabbitMQ, znalazłem ich tutoriale i pomogłem być naprawdę dobrym. W szczególności sprawdź sekcję [Tematy] (http://www.rabbitmq.com/tutorials/tutorial-five-python.html) - na przykład możesz subskrybować wiele kolejek na podstawie klucza routingu. – AdaTheDev