Chętnie poznamy wszelkie zalety i wady ActiveMQ vs RabbitMQ vs ZeroMQ. Informacje o innych interesujących kolejkach wiadomości są również mile widziane.
Nie znam się na kolejce wiadomości i czytałem więcej o prawdziwym przypadku jej użycia na stackoverflow.com/q/1035949/181870 . Później, gdy przeglądałem tematy / artykuły związane z kolejką komunikatów (w szczególności JMS), natknąłem się na OpenJMS - implementację Open Source API specyfikacji Java Message Service API 1.1 firmy Sun Microsystems. Dziwi mnie to, że nie jest tu omówione / omówione? Chciałem tylko sprawdzić ze społecznością, czy OpenJMS jest związany z tym tematem / dyskusją, a jeśli tak, to według OP, wszelkie doświadczenia z zaletami i wadami tego samego pomogłyby.
Gnanam,
3
3 lata później uwaga dla osób przeglądających tutaj ... pomyśl o DLACZEGO chcesz użyć oprogramowania pośredniego do kolejkowania wiadomości. Jeśli powodem jest podział zadań w klastrze, spójrz na Selera. Działa na wyższym poziomie abstrakcji niż rozwiązania w stylu MQ, używa RabbitMQ do przenoszenia wiadomości, ale ma znakomitą obsługę semantyki specyficznej dla zadania.
Chris Johnson
Odpowiedzi:
342
Edycja: Moja pierwotna odpowiedź była silnie skoncentrowana na AMQP. Postanowiłem przepisać go, aby zaoferować szersze spojrzenie na ten temat.
Te 3 technologie przesyłania wiadomości mają różne podejście do budowy systemów rozproszonych:
RabbitMQ jest jedną z wiodących implementacji protokołu AMQP (wraz z Apache Qpid). Dlatego implementuje architekturę brokera, co oznacza, że wiadomości są kolejkowane w centralnym węźle przed wysłaniem do klientów. Takie podejście sprawia, że RabbitMQ jest bardzo łatwy w użyciu i wdrażaniu, ponieważ zaawansowane scenariusze, takie jak routing, równoważenie obciążenia lub trwałe kolejkowanie komunikatów są obsługiwane w zaledwie kilku wierszach kodu. Jednak sprawia też, że jest mniej skalowalny i „wolniejszy”, ponieważ centralny węzeł dodaje opóźnienie, a koperty wiadomości są dość duże.
ZeroMq to bardzo lekki system przesyłania wiadomości zaprojektowany specjalnie dla scenariuszy o wysokiej przepustowości / niskim opóźnieniu, takich jak ten, który można znaleźć w świecie finansów. Zmq obsługuje wiele zaawansowanych scenariuszy przesyłania wiadomości, ale w przeciwieństwie do RabbitMQ, większość z nich będziesz musiał zaimplementować, łącząc różne elementy frameworka (np. Gniazda i urządzenia). Zmq jest bardzo elastyczny, ale musisz zapoznać się z około 80 stronami przewodnika (które polecam dla każdego, kto pisze system rozproszony, nawet jeśli nie używasz Zmq), zanim będziesz w stanie zrobić coś bardziej skomplikowanego niż wysyłanie wiadomości od 2 rówieśników.
ActiveMQ znajduje się na środku ziemi. Podobnie jak Zmq, można go wdrożyć z topologiami brokera i P2P. Podobnie jak RabbitMQ, łatwiej jest wdrożyć zaawansowane scenariusze, ale zwykle kosztem surowej wydajności. To szwajcarski scyzoryk do przesyłania wiadomości :-).
Wreszcie wszystkie 3 produkty:
mieć api klienta dla najpopularniejszych języków (C ++, Java, .Net, Python, Php, Ruby,…)
Chociaż jest to prawda, nie jestem pewien, czy przyjęcie AMQP ma silną korelację z pierwotnym pytaniem. Sądzę, że przy wyborze kolejki komunikatów ważniejsze są rozważenia niż to, jakiego protokołu przewodowego używa.
StaxMan
8
Pytanie nie wspomina o wymaganiu AMQP, ale ta odpowiedź dotyczy AMQP. Gdybyśmy przyjęli JMS jako wymaganie, odpowiedź byłaby w zasadzie odwrotna: ActiveMQ jest najbardziej popularny, RabbitMQ ma pewne wsparcie, które prawdopodobnie powinno działać. Jeśli nie założono protokołu przewodowego: patrz inne odpowiedzi.
Fletch
19
Po pracy w RabbitMQ i ActiveMQ polecam trzymać się z dala od ActiveMQ. Wydania są bardzo błędne i nie miałem końca problemów z awariami maszyn i przeciekami pamięci itp. Z drugiej strony RabbitMQ po prostu działa. Po podłączeniu go NIGDY nie musiałem już na to patrzeć. Po prostu robi to, czego potrzebuje. Jeśli chcesz, mam prosty samouczek RabbitMQ
Kelly,
2
Po przyjrzeniu się ofertom pracy dla RabbitMQ w porównaniu z ActiveMQ, RabbitMQ wydaje się być bardziej poszukiwany. ActiveMQ istnieje już dłużej, ale jest prawie tak samo wymagany przez pracodawców.
1
Przewodnik po ZMQ to także naprawdę zabawna i dobra lektura :)
Serwery kolejek wiadomości są dostępne w różnych językach: Erlang (RabbitMQ), C (beanstalkd), Ruby (Starling lub Sparrow), Scala (Kestrel, Kafka) lub Java (ActiveMQ). Krótki przegląd można znaleźć tutaj
Wróbel
napisane przez Alex MacCaw
Sparrow to lekka kolejka napisana w języku Ruby, która „mówi memcache”
Szpak
napisane przez Blaine Cook na Twitterze
Starling to serwer kolejki wiadomości oparty na MemCached
napisane w Ruby
przechowuje zadania w pamięci (kolejka komunikatów)
Używany przez LinkedIn do odciążenia przetwarzania wszystkich stron i innych widoków
Domyślnie używa trwałości, używa pamięci podręcznej dysku systemu operacyjnego dla gorących danych (ma wyższą przepustowość niż którakolwiek z powyższych z włączoną trwałością)
Obsługuje zarówno przetwarzanie on-line, jak i off-line
ZMQ
Biblioteka gniazd, która działa jako struktura współbieżności
Szybszy niż TCP, dla produktów klastrowych i superkomputerów
Przenosi wiadomości między inproc, IPC, TCP i multicast
Połącz N-do-N poprzez fanout, pubsub, potok, żądanie-odpowiedź
Asynch I / O dla skalowalnych wielordzeniowych aplikacji do przekazywania wiadomości
EagleMQ
EagleMQ jest otwartym, wydajnym i lekkim menedżerem kolejek.
Napisane w C
Przechowuje wszystkie dane w pamięci i wspiera trwałość.
Ma własny protokół. Obsługuje pracę z kolejkami, trasami i kanałami.
Czy mają zarządzanie rywalizacją? Zawsze znajdowałem ten problem z systemami kolejek. Na przykład blokowanie producenta, jeśli kolejka jest pełna na podstawie liczby elementów (nie zasobów pamięci).
sw.
1
queues.io - Pamiętaj o dodaniu brakujących szczegółów vs.
Właśnie rozwijam to, co Paweł dodał w komentarzu. Wspomniana strona jest martwa po 2010 roku, więc przeczytaj ją szczyptą soli. Wiele rzeczy zostało zmienionych w ciągu 3 lat.
Myślę, że ci faceci źle myślą o kolejkach - kolejki nie powinny wynosić 1 (lub więcej) na użytkownika. Powinni stawiać swoją pracę w kilku kolejkach, a następnie wykorzystywać. skrzynki odbiorcze (lub mbox) dla każdego użytkownika.
Michael Deardeuff,
1
Michael - chcesz trochę rozwinąć? Problemem jest dostarczanie w czasie rzeczywistym w systemie opartym na czacie grupowym. Jeśli dobrze rozumiem, mówisz o trwałym mechanizmie przechowywania wiadomości jako punktu końcowego (skrzynki odbiorczej)? Jeśli tak, to nie pasuje do rachunku, chcą, aby czat był dostarczany natychmiast, a klienci byli bezpośrednimi subskrybentami? O ile mogę stwierdzić, że mnóstwo kolejek tematycznych nie jest zoptymalizowanym przypadkiem użycia?
Josh
1
Aktualizacja: Ta strona wiki SecondLife została napisana w 2009 r. Do tej pory, w 2013 r., Wiele konkretnych punktów wspomnianych na temat różnych kolejek wiadomości, które badali, nie jest już aktualnych, z powodu ciągłych ulepszeń wszystkich MQ. Większość lub wszystkie testowane przez siebie MQ są w pewnym sensie lepsze.
Paul Legato,
71
To zależy od twojego przypadku użycia.
Porównanie 0MQ z ActiveMQ lub RabbitMQ jest niesprawiedliwe. ActiveMQ i RabbitMQ to systemy przesyłania wiadomości wymagające instalacji i administracji. Oferują one znacznie więcej niż ZeroMQ. Mają prawdziwe trwałe kolejki, obsługę transakcji itp.
ZeroMQ to lekka implementacja gniazd zorientowana na komunikaty. Nadaje się również do programowania asynchronicznego w trakcie procesu. Możliwe jest uruchomienie „Enterprise Messaging System” na ZeroMQ, ale trzeba by dużo zaimplementować samodzielnie.
Więc:
ActiveMQ, RabbitMQ, Websphere MQ i MSMQ to „Kolejki wiadomości dla przedsiębiorstw”
ZeroMQ to biblioteka IPC zorientowana na komunikaty.
Możesz użyć więcej niż jednego. rabbitmq.com/blog/2010/10/18/rabbitmq0mq-bridge mówi o tym, jak użyć 0MQ do połączenia między kilkoma brokerami RabbitMQ i utworzenia luźno powiązanej federacji.
Michael Dillon
34
Nie ma porównania między RabbitMQ i ActiveMQ tutaj . Po wyjęciu z pudełka ActiveMQ jest skonfigurowany tak, aby gwarantować dostarczanie wiadomości - co może sprawiać wrażenie powolnego w porównaniu do mniej niezawodnych systemów przesyłania wiadomości. Zawsze możesz zmienić konfigurację wydajności, jeśli chcesz, i uzyskać co najmniej tak dobrą wydajność, jak każdy inny system przesyłania wiadomości. Przynajmniej masz tę opcję. Na forach i często zadawanych pytaniach na temat ActiveMQ znajduje się wiele informacji na temat konfiguracji skalowania, wydajności i wysokiej dostępności. Ponadto ActiveMQ będzie obsługiwał AMQP 1.0, gdy specyfikacja zostanie sfinalizowana, wraz z innymi formatami przewodowymi, takimi jak STOMP.
Kolejnym plusem dla ActiveMQ jest projekt Apache, więc społeczność programistów jest różnorodna - i nie jest powiązana z jedną firmą.
Nie korzystałem z ActiveMQ ani RabbitMQ, ale użyłem ZeroMQ. Duża różnica, jaką widzę między ZeroMQ i ActiveMQ itp., Polega na tym, że 0MQ jest bez brokera i nie ma wbudowanej niezawodności do dostarczania wiadomości. Jeśli szukasz łatwego w użyciu interfejsu API obsługi wiadomości obsługującego wiele wzorców przesyłania, transportów, platform i powiązań językowych, zdecydowanie warto sprawdzić 0MQ. Jeśli szukasz platformy komunikacyjnej z pełną funkcjonalnością, 0MQ może nie pasować do rachunku.
Używam zeroMQ. Chciałem prostego systemu przekazywania wiadomości i nie potrzebuję komplikacji brokera. Nie chcę też dużego systemu korporacyjnego zorientowanego na Javę.
Jeśli potrzebujesz szybkiego, prostego systemu i potrzebujesz obsługi wielu języków (używam C i .net), to polecam przyjrzeć się 0MQ.
Również używając ZMQ w środowisku C / C ++. Bardzo szybki. Używanie wzorca brokera. Dobre dopasowanie do naszej aplikacji VOIP-watch-dog w czasie rzeczywistym, wykonującej mikro-pmty dla farm serwerów SIP Kamailio. Jestem całkiem pewien, że mógłbym napisać bardzo wyrafinowanego brokera za pomocą ZMQ, ale oceniłbym kilka dodatkowych produktów przed zaangażowaniem się w to.
10
Mogę dodać tylko 2 centy o ActiveMQ, ale ponieważ jest to jeden z najpopularniejszych:
Język, w którym chcesz pisać, może być ważny. Mimo że ActiveMQ ma większość klientów, ich implementacja w C # jest daleka od ukończenia w porównaniu z biblioteką Java.
Oznacza to, że niektóre podstawowe funkcje są niestabilne (protokół przełączania awaryjnego, który ... no cóż ... w niektórych przypadkach kończy się niepowodzeniem, brak obsługi ponownej dostawy), a innych po prostu nie ma. Ponieważ .NET nie wydaje się być tak ważny dla projektu, rozwój jest raczej powolny i wydaje się, że nie ma żadnego planu wydania. Bagażnik jest często zepsuty, więc jeśli weźmiesz to pod uwagę, możesz rozważyć przyczynienie się do projektu, jeśli chcesz, aby wszystko poszło do przodu.
Potem jest sam ActiveMQ, który ma wiele fajnych funkcji, ale także kilka bardzo dziwnych problemów. Używamy wersji Activemq Fuse (Progress) ze względów stabilności, ale nawet wtedy istnieje kilka dziwnych „błędów”, o których należy pamiętać:
Brokerzy, którzy w niektórych przypadkach przestają wysyłać wiadomości
Błędy dziennika powodujące, że kolejka wyświetla komunikaty, których już nie ma (nie są dostarczane do konsumenta, ale nadal)
Priorytet nadal nie jest wdrażany (znajduje się na liście problemów od początku rodzaju ludzkiego)
itd itd.
W sumie jest to całkiem fajny produkt, jeśli możesz żyć z jego problemami:
A) nie bój się aktywnie angażować podczas korzystania z .NET
B) rozwijaj w Javie ;-)
Niewielka aktualizacja: Od pewnego czasu KahaDB jest domyślnym sklepem trwałości dla ActiveMQ. Jednak: w ogóle nie jest stabilny. W naszych testach widzieliśmy uszkodzenia bazy danych (niektóre odtwarzalne, inne kosztują nas około 15 000 000 wiadomości) UWAGA!
Noctris
8
ZeroMQ ma naprawdę zero kolejek! To naprawdę błąd! Nie ma kolejek, tematów, wytrwałości, niczego! Jest to tylko oprogramowanie pośrednie dla API gniazd. Jeśli to, co wyglądasz fajnie! w przeciwnym razie zapomnij o tym! to nie jest jak activeMQ lub rabbitmq.
Osobiście wypróbowałem wszystkie powyższe trzy. RabbitMQ jest według mnie najlepszą pod względem wydajności, ale nie ma opcji przełączania awaryjnego i odzyskiwania. ActiveMQ ma najwięcej funkcji, ale działa wolniej.
Aktualizacja:
HornetQ jest również opcją, na którą możesz spojrzeć, jest to skarga JMS, lepsza opcja niż ActiveMQ, jeśli szukasz rozwiązania opartego na JMS.
Moja subiektywna opinia jest taka, że AMQP jest w porządku, jeśli naprawdę potrzebujesz stałych narzędzi do przesyłania wiadomości i nie martwisz się, że pośrednik może być wąskim gardłem. Ponadto brakuje obecnie klienta C ++ dla AMQP (Qpid nie uzyskał mojego wsparcia; nie jestem pewien co do klienta ActiveMQ), ale być może trwają prace. ZeroMQ może być inaczej.
Korzystam z ActiveMQ w środowisku produkcyjnym od około 3 lat. Chociaż wykonuje zadanie, ustawianie wersji bibliotek klienta, które działają poprawnie i są wolne od błędów, może stanowić problem. Chcieliśmy obecnie przejść na RabbitMQ.
W komentarzach tego postu na blogu jest trochę dyskusji na temat pisania przez Twittera własnej kolejki wiadomości, co może być interesujące.
Steve przeprowadził szeroko zakrojone testy obciążeń i obciążeń ActiveMQ, RabbitMQ itp. ActiveMQ jest w rzeczywistości dość wolny (znacznie wolniejszy niż Kestrel), RabbitMQ konsekwentnie zawiesza się ze zbyt dużą liczbą producentów i zbyt małą liczbą konsumentów.
Prawdopodobnie początkowo nie będziesz mieć obciążenia podobnego do Twittera :)
Abie, wszystko sprowadza się do twojego przypadku użycia. Zamiast polegać na czyimś koncie dotyczącym przypadku użycia, możesz opublikować swój przypadek użycia na liście dyskusyjnej królików. Pytanie na Twitterze również da ci kilka odpowiedzi. Najlepsze życzenia, Alexis
O ZeroMQ aka 0MQ, jak już zapewne wiesz, to ten, który dostarczy ci najwięcej wiadomości na sekundę (były one około 4 milionów na sekundę na ich serwerze referencyjnym podczas ostatniego sprawdzania), ale jak już wiesz, dokumentacja nie istnieje. Trudno będzie ci znaleźć sposób na uruchomienie serwerów, nie mówiąc już o tym, jak z nich korzystać. Myślę, że częściowo dlatego nikt jeszcze nie wniósł wkładu w 0MQ.
podczas gdy zmq jest szybki i ma łatwy interfejs API, pamiętaj o tym: bez wytrwałości, bez transakcji. Brak wykrycia sfałszowanych lub powolnych konsumentów (wiadomości są po prostu usuwane bez powiadomienia programu producenta). Sidenote: zmq nie wymaga serwera, więc nie znajdziesz dokumentów do uruchamiania serwerów. Mają serwer proxy, jeśli potrzebujesz czegoś takiego.
nos
0
Jeśli interesują Cię również komercyjne wdrożenia, powinieneś rzucić okiem na Nirvana z moich kanałów .
Nirvana jest intensywnie wykorzystywana w branży usług finansowych do tworzenia platform obrotu i dystrybucji cen na małą skalę na dużą skalę.
Obsługiwana jest szeroka gama języków programowania klienta w domenach korporacyjnych, internetowych i mobilnych.
Możliwości klastrowania są niezwykle zaawansowane i warto je sprawdzić, jeśli dla Ciebie ważne jest transparentne HA lub równoważenie obciążenia.
Nirvana można pobrać bezpłatnie w celach programistycznych.
Odpowiedzi:
Edycja: Moja pierwotna odpowiedź była silnie skoncentrowana na AMQP. Postanowiłem przepisać go, aby zaoferować szersze spojrzenie na ten temat.
Te 3 technologie przesyłania wiadomości mają różne podejście do budowy systemów rozproszonych:
RabbitMQ jest jedną z wiodących implementacji protokołu AMQP (wraz z Apache Qpid). Dlatego implementuje architekturę brokera, co oznacza, że wiadomości są kolejkowane w centralnym węźle przed wysłaniem do klientów. Takie podejście sprawia, że RabbitMQ jest bardzo łatwy w użyciu i wdrażaniu, ponieważ zaawansowane scenariusze, takie jak routing, równoważenie obciążenia lub trwałe kolejkowanie komunikatów są obsługiwane w zaledwie kilku wierszach kodu. Jednak sprawia też, że jest mniej skalowalny i „wolniejszy”, ponieważ centralny węzeł dodaje opóźnienie, a koperty wiadomości są dość duże.
ZeroMq to bardzo lekki system przesyłania wiadomości zaprojektowany specjalnie dla scenariuszy o wysokiej przepustowości / niskim opóźnieniu, takich jak ten, który można znaleźć w świecie finansów. Zmq obsługuje wiele zaawansowanych scenariuszy przesyłania wiadomości, ale w przeciwieństwie do RabbitMQ, większość z nich będziesz musiał zaimplementować, łącząc różne elementy frameworka (np. Gniazda i urządzenia). Zmq jest bardzo elastyczny, ale musisz zapoznać się z około 80 stronami przewodnika (które polecam dla każdego, kto pisze system rozproszony, nawet jeśli nie używasz Zmq), zanim będziesz w stanie zrobić coś bardziej skomplikowanego niż wysyłanie wiadomości od 2 rówieśników.
ActiveMQ znajduje się na środku ziemi. Podobnie jak Zmq, można go wdrożyć z topologiami brokera i P2P. Podobnie jak RabbitMQ, łatwiej jest wdrożyć zaawansowane scenariusze, ale zwykle kosztem surowej wydajności. To szwajcarski scyzoryk do przesyłania wiadomości :-).
Wreszcie wszystkie 3 produkty:
źródło
Dlaczego tęskniłeś za Sparrow , Starling , Kestrel , Amazon SQS , Beanstalkd , Kafka , IronMQ ?
Serwery kolejek wiadomości
Serwery kolejek wiadomości są dostępne w różnych językach: Erlang (RabbitMQ), C (beanstalkd), Ruby (Starling lub Sparrow), Scala (Kestrel, Kafka) lub Java (ActiveMQ). Krótki przegląd można znaleźć tutaj
Wróbel
Szpak
Pustułka
RabbitMQ
Apache ActiveMQ
Beanstalkd
Amazon SQS
Kafka
ZMQ
EagleMQ
IronMQ
Mam nadzieję, że to nam pomoże. źródło
źródło
Więcej informacji niż chciałbyś wiedzieć:
http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes
AKTUALIZACJA
Właśnie rozwijam to, co Paweł dodał w komentarzu. Wspomniana strona jest martwa po 2010 roku, więc przeczytaj ją szczyptą soli. Wiele rzeczy zostało zmienionych w ciągu 3 lat.
źródło
To zależy od twojego przypadku użycia.
Porównanie 0MQ z ActiveMQ lub RabbitMQ jest niesprawiedliwe. ActiveMQ i RabbitMQ to systemy przesyłania wiadomości wymagające instalacji i administracji. Oferują one znacznie więcej niż ZeroMQ. Mają prawdziwe trwałe kolejki, obsługę transakcji itp.
ZeroMQ to lekka implementacja gniazd zorientowana na komunikaty. Nadaje się również do programowania asynchronicznego w trakcie procesu. Możliwe jest uruchomienie „Enterprise Messaging System” na ZeroMQ, ale trzeba by dużo zaimplementować samodzielnie.
Więc:
ActiveMQ, RabbitMQ, Websphere MQ i MSMQ to „Kolejki wiadomości dla przedsiębiorstw”
ZeroMQ to biblioteka IPC zorientowana na komunikaty.
źródło
Nie ma porównania między RabbitMQ i ActiveMQ tutaj . Po wyjęciu z pudełka ActiveMQ jest skonfigurowany tak, aby gwarantować dostarczanie wiadomości - co może sprawiać wrażenie powolnego w porównaniu do mniej niezawodnych systemów przesyłania wiadomości. Zawsze możesz zmienić konfigurację wydajności, jeśli chcesz, i uzyskać co najmniej tak dobrą wydajność, jak każdy inny system przesyłania wiadomości. Przynajmniej masz tę opcję. Na forach i często zadawanych pytaniach na temat ActiveMQ znajduje się wiele informacji na temat konfiguracji skalowania, wydajności i wysokiej dostępności. Ponadto ActiveMQ będzie obsługiwał AMQP 1.0, gdy specyfikacja zostanie sfinalizowana, wraz z innymi formatami przewodowymi, takimi jak STOMP.
Kolejnym plusem dla ActiveMQ jest projekt Apache, więc społeczność programistów jest różnorodna - i nie jest powiązana z jedną firmą.
źródło
Nie korzystałem z ActiveMQ ani RabbitMQ, ale użyłem ZeroMQ. Duża różnica, jaką widzę między ZeroMQ i ActiveMQ itp., Polega na tym, że 0MQ jest bez brokera i nie ma wbudowanej niezawodności do dostarczania wiadomości. Jeśli szukasz łatwego w użyciu interfejsu API obsługi wiadomości obsługującego wiele wzorców przesyłania, transportów, platform i powiązań językowych, zdecydowanie warto sprawdzić 0MQ. Jeśli szukasz platformy komunikacyjnej z pełną funkcjonalnością, 0MQ może nie pasować do rachunku.
Widzieć www.zeromq.org/docs:cookbook na dużo przykładów jak 0MQ mogą być użyte.
Z powodzeniem używam 0MQ do przekazywania wiadomości w aplikacji do monitorowania zużycia energii elektrycznej (patrz http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/ )
źródło
Używam zeroMQ. Chciałem prostego systemu przekazywania wiadomości i nie potrzebuję komplikacji brokera. Nie chcę też dużego systemu korporacyjnego zorientowanego na Javę.
Jeśli potrzebujesz szybkiego, prostego systemu i potrzebujesz obsługi wielu języków (używam C i .net), to polecam przyjrzeć się 0MQ.
źródło
Mogę dodać tylko 2 centy o ActiveMQ, ale ponieważ jest to jeden z najpopularniejszych:
Język, w którym chcesz pisać, może być ważny. Mimo że ActiveMQ ma większość klientów, ich implementacja w C # jest daleka od ukończenia w porównaniu z biblioteką Java.
Oznacza to, że niektóre podstawowe funkcje są niestabilne (protokół przełączania awaryjnego, który ... no cóż ... w niektórych przypadkach kończy się niepowodzeniem, brak obsługi ponownej dostawy), a innych po prostu nie ma. Ponieważ .NET nie wydaje się być tak ważny dla projektu, rozwój jest raczej powolny i wydaje się, że nie ma żadnego planu wydania. Bagażnik jest często zepsuty, więc jeśli weźmiesz to pod uwagę, możesz rozważyć przyczynienie się do projektu, jeśli chcesz, aby wszystko poszło do przodu.
Potem jest sam ActiveMQ, który ma wiele fajnych funkcji, ale także kilka bardzo dziwnych problemów. Używamy wersji Activemq Fuse (Progress) ze względów stabilności, ale nawet wtedy istnieje kilka dziwnych „błędów”, o których należy pamiętać:
W sumie jest to całkiem fajny produkt, jeśli możesz żyć z jego problemami:
A) nie bój się aktywnie angażować podczas korzystania z .NET
B) rozwijaj w Javie ;-)
źródło
ZeroMQ ma naprawdę zero kolejek! To naprawdę błąd! Nie ma kolejek, tematów, wytrwałości, niczego! Jest to tylko oprogramowanie pośrednie dla API gniazd. Jeśli to, co wyglądasz fajnie! w przeciwnym razie zapomnij o tym! to nie jest jak activeMQ lub rabbitmq.
źródło
Istnieje porównanie funkcji i wydajności RabbitMQ ActiveMQ i QPID podane na stronie
stronie http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/
Osobiście wypróbowałem wszystkie powyższe trzy. RabbitMQ jest według mnie najlepszą pod względem wydajności, ale nie ma opcji przełączania awaryjnego i odzyskiwania. ActiveMQ ma najwięcej funkcji, ale działa wolniej.
Aktualizacja: HornetQ jest również opcją, na którą możesz spojrzeć, jest to skarga JMS, lepsza opcja niż ActiveMQ, jeśli szukasz rozwiązania opartego na JMS.
źródło
O moich początkowych doświadczeniach dotyczących AMQP, Qpid i ZeroMQ pisałem tutaj: http://ron.shoutboot.com/2010/09/25/is-ampq-for-you/
Moja subiektywna opinia jest taka, że AMQP jest w porządku, jeśli naprawdę potrzebujesz stałych narzędzi do przesyłania wiadomości i nie martwisz się, że pośrednik może być wąskim gardłem. Ponadto brakuje obecnie klienta C ++ dla AMQP (Qpid nie uzyskał mojego wsparcia; nie jestem pewien co do klienta ActiveMQ), ale być może trwają prace. ZeroMQ może być inaczej.
źródło
Korzystam z ActiveMQ w środowisku produkcyjnym od około 3 lat. Chociaż wykonuje zadanie, ustawianie wersji bibliotek klienta, które działają poprawnie i są wolne od błędów, może stanowić problem. Chcieliśmy obecnie przejść na RabbitMQ.
źródło
W komentarzach tego postu na blogu jest trochę dyskusji na temat pisania przez Twittera własnej kolejki wiadomości, co może być interesujące.
Prawdopodobnie początkowo nie będziesz mieć obciążenia podobnego do Twittera :)
źródło
Niewiele aplikacji ma tyle konfiguracji strojenia, co ActiveMQ. Niektóre cechy wyróżniające ActiveMQ to:
Konfigurowalny rozmiar pobierania wstępnego. Konfigurowalne gwintowanie. Konfigurowalne przełączanie awaryjne. Konfigurowalne powiadomienie administracyjne dla producentów. ... szczegóły na:
http://activemq.net/blog http://activemq.apache.org
źródło
Abie, wszystko sprowadza się do twojego przypadku użycia. Zamiast polegać na czyimś koncie dotyczącym przypadku użycia, możesz opublikować swój przypadek użycia na liście dyskusyjnej królików. Pytanie na Twitterze również da ci kilka odpowiedzi. Najlepsze życzenia, Alexis
źródło
O ZeroMQ aka 0MQ, jak już zapewne wiesz, to ten, który dostarczy ci najwięcej wiadomości na sekundę (były one około 4 milionów na sekundę na ich serwerze referencyjnym podczas ostatniego sprawdzania), ale jak już wiesz, dokumentacja nie istnieje. Trudno będzie ci znaleźć sposób na uruchomienie serwerów, nie mówiąc już o tym, jak z nich korzystać. Myślę, że częściowo dlatego nikt jeszcze nie wniósł wkładu w 0MQ.
Baw się dobrze!
źródło
Jeśli interesują Cię również komercyjne wdrożenia, powinieneś rzucić okiem na Nirvana z moich kanałów .
Nirvana jest intensywnie wykorzystywana w branży usług finansowych do tworzenia platform obrotu i dystrybucji cen na małą skalę na dużą skalę.
Obsługiwana jest szeroka gama języków programowania klienta w domenach korporacyjnych, internetowych i mobilnych.
Możliwości klastrowania są niezwykle zaawansowane i warto je sprawdzić, jeśli dla Ciebie ważne jest transparentne HA lub równoważenie obciążenia.
Nirvana można pobrać bezpłatnie w celach programistycznych.
źródło