Programowanie reaktywne w języku Scala
Obsługa awarii
Komunikacja zdalna (remoting)
Komunikacja z uzyciem Akka HTTP
Zadanie
Do implementacji zadań proszę użyć szablonu: https://github.com/agh-reactive/reactive-scala-labs-templates/tree/lab-5
W szablonie został już zaimplementowany ProductCatalog oraz demonstracyjny przykład komunikowania się z katalogiem produktów pomiędzy różnymi systemami aktorowymi zawarty w teście ProductCatalogRemoteTest.
Katalog produktów ma następujące odpowiedzialności:
- przechowywanie elementów Item, zgodnie z konwencją z lab4 (id jako URI), liczba sztuk w magazynie;
- wyszukiwanie wg słów kluczowych, którymi są: nazwa producenta i wyrazy z nazwy produktu.
- Przykłady: "Frappuccino Coffee Drink","Starbucks"; "Moisturizing Cream","Gerber"; "32 New Disposable Razor Twin Blades","Gillette"; "Coke Classic Bottles","Coca-Cola".
- Przykład zapytania: "gerber cream"
- Jako rezultat zapytania zwracane jest domyślnie 10 najlepiej pasujących produktów (czyli tych, które mają w nazwie najwięcej słów kluczowych z zapytania).
- Dane importowane są z pliku query_result.bz2.
-
(15 pkt) Proszę stworzyć API (REST) dla ProductCatalog udostępniające przeszukiwanie katalogu, zwracające wyniki jako JSON.
Proszę ProductCatalog uruchomić na innym systemie aktorowym niż serwer HTTP (tak aby zademonstrować komunikację z ProductCatalog poprzez zdalną referencję do aktora).
Przy implementacji servera http proszę spojrzeć na przykład HelloWorldAkkaHttpServer.
-
(10 pkt) Proszę zaimplementować aktora Payment komunikującego się przy użyciu Akka-http z zewnętrznymi serwisami obsługującymi kilka metod płatności (np. VISA, PayU, PayPal itp).
Do implementacji komunikacji z serwerem proszę skorzystać z szablonu aktora PaymentService. Proszę wykorzystać implementację serwera z klasy PaymentServiceServer
Należy wykorzystać wzorzec w którym aktor PaymentService jest tworzony per wywołanie.
-
(15 pkt) Proszę dodać mechanizmy obsługi awarii do obsługi błędów w trakcie wykonywania operacji płatności.
Należy wykorzystać wzorzec nadzorcy.
Punktowana będzie obsługa ciekawych błędów, np. błędy HTTP, błędy sieciowe, itp.
Bartosz Baliś, balis at agh edu pl
Maciej Malawski, malawski at agh edu pl
Katarzyna Rycerz, kzajac at agh edu pl
|