mam sporo Apache Camel (routing/mediacji/silnika orchestation; lekki ESB) doświadczenie i jestem regały mój mózg próbuje zrozumieć różnicę między Akka:mechanizmy wiadomości Akka przykładem
- dyspozytorów (
Dispatcher
,PinnedDispatcher
,CallingThreadDispatcher
) - Routery
- Baseny
- Grupy Autobusy
- imprez
Zgodnie z docs:
Dyspozytorzy są:
... jest to, co sprawia, Akka Aktorzy „tick”, to jest silnik maszyny tak powiem.
Ale to tak naprawdę nie wyjaśnia, czym jest dyspozytor lub jaki jest związek z aktorem.
Routery są:
Wiadomości mogą być wysyłane za pośrednictwem routera, aby skutecznie wyprowadzić do przeznaczenia aktorów, znanych jako jego routees. Router może być używany wewnątrz lub na zewnątrz aktora i możesz samodzielnie zarządzać routingiem lub użyć autonomicznego odtwarzacza routera z możliwościami konfiguracji. Ale brzmi okropnie jak dyspozytor.
Baseny są:
[A typ] Router [że] tworzy routees jak dziecięcych aktorów i usuwa je z routera, czy zakończyć.
Grupy są:
[A typ] aktor [gdzie routees] są tworzone zewnętrznie do routera, a router wysyła wiadomości do określonej ścieżce przy użyciu wybór aktora, bez oglądania na zakończenie .
Autobusy imprez są:
... sposób, aby wysyłać wiadomości do grup podmiotów
To brzmi jak dyspozytorów i routery.
Więc moje główne obawy są:
- Jaka jest różnica między dyspozytorzy, routery i autobusów zdarzeń, a kiedy użyć każdego?
- Kiedy korzystać z basenu vs grupy?
Niesamowite odpowiedź, dzięki @hveiga (+1) - kilka followups bardzo szybko: (1) tak, że brzmi jak 'Dispatcher' jest jak * * router, ale używane wewnętrznie do wysyłania wiadomości i innych rzeczy gwintem niskopoziomowe w Akka i jako taki nigdy nie wyślę wiadomości bezpośrednio do dyspozytora, ** tak **? (2) Wygląda na to, że magistrala zdarzeń jest naprawdę jak cała skrzynka pocztowa dla całego systemu. Ale jeśli zasubskrybowałem, aby otrzymać parytetyczny typ wiadomości z autobusu, czy to zablokuje inne typy aktorów od otrzymania tej samej wiadomości? Dzięki jeszcze raz! – smeeb
'Dispatchery są dla ciebie przezroczyste. Oni __dispatch__ wątków do wykonywania działań. Nie możesz wysyłać wiadomości do 'dispatchera '. Warto wspomnieć, że 'dispatcher' to ** nie ** aktor, podczas gdy' router' jest. Jeśli chodzi o magistralę zdarzeń, to możesz mieć rację, jeśli chodzi o definicję skrzynki pocztowej w całym systemie. Jednak nie znam wewnętrznych, ale naprawdę wątpię, że faceci z Akki zrobią coś blokującego. Zakładam, że to nie blokuje. Prawdopodobnie jest zaimplementowany jako 'Router', gdzie lista trasowników (subskrybentów) dla każdego typu wiadomości zmienia się w czasie. – hveiga