Zadanie #1670
Utworzenie serwisu wiadomości
Status: | Rozwiązany | Start date: | 2017-05-09 | |
---|---|---|---|---|
Priority: | Normalny | Due date: | ||
Assignee: | Michał Komar | % Done: | 0% | |
Category: | backend | |||
Target version: | 0.3 | |||
Developer: | Jarosław Bąbel | Tester: | Michał Komar |
Description
Serwis powinien być brokerem informacji. Powinien pozwalać na rejestrację odbiorców wiadomości. Powinien także posiadać możliwość odbierania wiadomości i przesyłania ich do odbiorców. Należy bazować na spring-messaging. W szczególności należy zapewnić przesyłanie wiadomości do websocketów (to chyba z automatu powinno działać w przypadku spring-messaging).
W ramach zadania należy także zunifikować model wiadomości. Każda wiadomość powinna mieć datę, informację o tym ,czy ma być zapisywana oraz ewentualnie docelowego użytkownika. Persystowalne mogą być tylko wiadomości wysyłane do użytkowników.
W ramach innych zadań zostaną określone specyficzne wiadomości oraz sposób ich obsługi.
Related issues
Associated revisions
refs #1670 konfiguracja wbudowanego brokera activemq w serwisach, połączenie brokera z websockets
refs #1670 konfiguracja JmsMessagingTemplate do obsługi topiców po stronie serwisów
refs #1670 w serwisie notyfikacji ogólny interfejs JmsMessagingOperation zamiast implementacji JmsMessageTemplate
refs #1670 wysyłanie komunikatów o zmianie dokumentu po zatwierdzeniu transakcji save/remove w InsecureDocumentStorage, usunięcie MessageSender i wysyłania komunikatów o zmianie dokumentów z poziomu web
refs #1670 wydzielenie konfiguracji brokera activemq
refs #1670 przeniesienie konfiguracji do pakietu config, usunięcie jednego "ostrzeżenia" w kodzie
refs #1670 możliwość rejestracji wielu odbiorców (topiców) dla jednej klasy wiadomości, śledzenie i wyrejestrowywanie rejestracji
refs #1670 zmiana nazwy serwisu z notifications na messaging, wydzielenie pakietu na klasy wiadomości
refs #1670 poprawki po mergu, drobne zmiany nazw
History
#1 Updated by Michał Komar almost 8 years ago
- Precedes Zadanie #1671: Obsługa notyfikacji websocketowych added
#2 Updated by Jarosław Bąbel almost 8 years ago
- Status changed from Nowy to W toku
#3 Updated by Jarosław Bąbel over 7 years ago
- Status changed from W toku to Testowanie
- Assignee changed from Jarosław Bąbel to Michał Komar
#4 Updated by Michał Komar over 7 years ago
- Status changed from Testowanie to Odpowiedź
- Assignee changed from Michał Komar to Jarosław Bąbel
- Należy się pozbyć messageSendeara w warstwie kontrolerów. Message do serwisu notyfikacji powinien być wysyłany na commit transakcji wykonującej operację (poprzez transaction synchronization).
W notification service zamienić JmsMessageOperations na MessageSendingOperations<String> albo wręcz MessageSendingOperations<T> i ugenerycznić całą klasę.- Usunąć warningi.
- Wydzielić konfigurację brokera activemq na zewnątrz messaging configuration i ładować ją warunkowo, tak jak ActiveMQAutoConfiguration
- Dodać taką samą konfigurację dla artemis (powinno to być kilka linii, a będziemy mogli zobaczyć, jak działa)
- Przenieść MessagingConfiguration do pl.edu.icm.jupiter.services.config
Na razie tyle, jak będę miał więcej czasu to przejrzę dokładniej.
#5 Updated by Michał Komar over 7 years ago
Przy obecnej implementacji nie ma możliwośći zarejestrowania wielu odbiorców pod tą samą odpowiedź -> proponuję zmianę mapy na multimap. W ramach powiązanego zadania dodam jeszcze parę modyfikacji - ale multimap i tak się przyda.
#6 Updated by Michał Komar over 7 years ago
Brakuje możliwości wyrejestrowywania się z serwisu. Najlepiej byłoby wprowadzić mechanizm, który nadaje rejestracji odpowiedni identyfikator, na podstawie którego, można się wyrejestrować ->
string register(...) - zwraca id
void unregister(string id) - wyrejestrowuje wpis o danym identyfikatorze
#7 Updated by Michał Komar over 7 years ago
- Precedes Zadanie #1708: Rejestracja użytkowników jako odbiorców wiadomości added
#8 Updated by Michał Komar over 7 years ago
- Subject changed from Utworzenie serwisu notyfikacji to Utworzenie serwisu wiadomości
Zmień prosze nazwę serwisu na serwis wiadomości (MessagingService) - chcę dać Ci do zrobienia serwis notyfikacji użytkowników - który korzystałby z tego serwisu, jednak przechowywałb notyfikacje w bazie i miał mechanizm ich wyświetlania na UI.
#9 Updated by Jarosław Bąbel over 7 years ago
- Status changed from Odpowiedź to Testowanie
- Assignee changed from Jarosław Bąbel to Michał Komar
#10 Updated by Michał Komar over 7 years ago
- Status changed from Testowanie to Odpowiedź
- Assignee changed from Michał Komar to Jarosław Bąbel
Nadawanie identyfikatórw nie zapewnia unikalności -> https://stackoverflow.com/questions/25168062/why-is-i-not-atomic
Proponuję użyć uuid jako identyfikator, ewentualnie użyć atomicinteger i funkcji incrementandget/getandincrement
Reszta ok.
#11 Updated by Jarosław Bąbel over 7 years ago
- Status changed from Odpowiedź to Testowanie
- Assignee changed from Jarosław Bąbel to Michał Komar
Zmieniłem registrationId na UUID.