Pracuję nad aplikacjami finansowymi w Javie, a uzyskanie współbieżności z prawem to ból. Erlang i model aktorów powinien dobrze pasować do masowo współbieżnych aplikacji, ale nie wiem, jak to zrobić w Javie. Wiem, że istnieją biblioteki takie jak Jetlang, FunctionalJava, kilim itp., Ale zwykle nie wychodzą poza uproszczone przykłady.jak robić aktorów (erlang) w java?
Powiedz, że muszę przetworzyć trzy lub cztery różne zdarzenia, takie jak obliczenie pewnej liczby z danych rynkowych, kanały zamówień/handlu i "wyprowadzenie" niektórych pochodnych tych danych. W większości przypadków te zdarzenia lub strumienie danych muszą być przetwarzane w kolejności (przynajmniej w kolejności w odniesieniu do niektórych kluczy ... na przykład wszystkie zamówienia na określony symbol muszą być przetwarzane w kolejności, ale równolegle z w odniesieniu do niepowiązanych symboli)
Tworzę normalny obiekt Java za pomocą metod, które mutują stan. Zamiast pozwalać tym metodom na bezpośrednią zmianę stanu, umieszczam ich parametry (przekształcając je w obiekt polecenia) w kolejce fifo (skrzynka pocztowa erlanga) i metodę react(), która przetwarza tę kolejkę. W ten sposób wszystkie aktualizacje muszą przechodzić przez pojedynczą kolejkę, a do metody react() można uzyskać tylko jedną aktualizację naraz. Teoretycznie powinno to zaoszczędzić mi potrzebę zablokowania lub synchronizacji w tej metodzie.
Jednak ta kolejka jest w zasadzie kolejką producenta/konsumenta, co oznacza, że jest kolejką blokującą. Blokowanie jest bardzo szkodliwe dla skalowalności. Ponadto, posiadanie pojedynczej kolejki oznacza, że wszystkie moje obiekty poleceń aktualizacji (różnych typów) wychodzą z kolejki z jakimś nadmiernie generycznym super typem (takim jak Object) i muszę odrzucić je z powrotem do właściwego typu i pozwolić im() je przetworzyć .
Gdy ten aktywowany obiekt wytworzy wynik, który zostanie zużyty przez inny taki obiekt, przechodzę przez ten sam proces. Innymi słowy, zmieniłem model programowania z orientacji obiektowej, z metodami, które zwracają wyniki, na pewien rodzaj kontynuacji przechodzącej koszmar, w którym wszystkie moje metody stają się asynchroniczne.
Jakieś pomysły, jak mogę się do tego zbliżyć?
FYI, jak na stronie internetowej Gildii Aktorów, wydaje się, że projekt nie jest już utrzymywany. –