Próbuję określić opcje łączenia w klastry mojej aplikacji ServiceMix 3.3.1/Camel 2.1/AMQ 5.3. Zajmuję się przetwarzaniem dużych ilości wiadomości i potrzebuję klastrowania dla wysokiej dostępności i poziomej skalowalności.Apache Camel z klastrem ActiveMQ
Oto zasadzie to, co robi mój wniosek ... protokole HTTP> QUEUE-> proces-> od bazy danych> Wątek
z ("pomost: http://0.0.0.0/inbound ") .Aby (" ActiveMQ: inboundQueue");
z ("ActiveMQ: inboundQueue maxConcurrentConsumers = 50") .process dekodowania (()) .process (transformacji()) .process (walidacji()) .process (saveToDatabase()) . to ("activemq: topic: ouboundTopic");
Tak, czytałem wszystkie strony grupujące ServiceMix i AcitveMQ, ale nadal nie jestem pewien, w którą stronę pójść.
Wiem, że mogę używać konfiguracji Master/Slave dla HA, ale to nie pomaga w skalowalności.
Przeczytałem o sieci brokerów, ale nie jestem pewien, w jaki sposób ma to zastosowanie. Na przykład, jeśli rozmieszczę identyczne trasy wielbłądów na wielu węzłach w klastrze, w jaki sposób będą one "współdziałać" dokładnie? Jeśli wskażę mojego producenta HTTP w jednym węźle (NodeA), które wiadomości zostaną wysłane do NodeB? Czy kolejki/tematy będą wspólne dla Węzła A/B ... jeśli tak, to czy wiadomości są dzielone lub duplikowane? W jaki sposób klient zewnętrzny subskrybowałby mój "outboundTopic" dokładnie (i otrzymywałby wszystkie wiadomości, itp.)?
Alternatywnie, myślałem, że powinienem po prostu udostępniać brokera między wieloma instancjami ServiceMix. Byłoby to czystsze, ponieważ byłby tylko jeden zestaw kolejek/tematów do zarządzania i mogłem skalować, dodając więcej instancji. Ale teraz ograniczam się do skalowalności pojedynczego brokera i wracam do pojedynczego punktu awarii ...
Jeśli ktoś może wyjaśnić mi kompromisy ... Byłbym wdzięczny .
Bruce, dzięki. Używam właściwości "maxConcurrentConsumers" do wielowątkowości klientów z kolejki wejściowej. Teraz próbuję wykonać następny krok i rozdzielić obciążenie na wiele maszyn. Wygląda na to, że mógłbym skonfigurować wiele identycznych instancji SMX skonfigurowanych w sieci brokerów, które rozdzieliłyby obciążenie na moje potrzeby. Czy MessageGroups nadal zapewnia powinowactwo wątku do sieci brokerów? Muszę również udostępnić portal outboundTopic portalowi ... Czy portal musiałby się połączyć z każdym brokerem, aby uzyskać wszystkie wiadomości? –
Nie wierzę, że grupy dyskusyjne zapewnią wyłączność w sieci brokerów. Łączna kolejność działa tylko dla pojedynczego brokera na raz, więc myślę, że grupy wiadomości są w ten sam sposób. Dopóki wszystkie wiadomości są wysyłane do tematu wychodzącego, wszystkie wiadomości powinny zostać zużyte, bez względu na brokera, w którym zarejestrowana jest subskrypcja. Ponieważ jest to temat, możesz również użyć trwałej subskrypcji. Chociaż nie jestem pewien, czy pojedynczy konsument z trwałą subskrypcją jest dobrym pomysłem, ponieważ używasz wielu równoczesnych klientów do pobierania wiadomości z kolejki wejściowej. – bsnyder
@bsnyder - ładne podsumowanie; gdzie chciałbyś zaproponować najbardziej aktualną dokumentację ServiceMix? Oficjalna dokumentacja na stronie internetowej jest dość przestarzała. – wulfgarpro