Zadanie #1670

Utworzenie serwisu wiadomości

Added by Michał Komar about 7 years ago. Updated almost 7 years ago.

Status:RozwiązanyStart date:2017-05-09
Priority:NormalnyDue 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

Precedes Jupiter - Zadanie #1671: Obsługa notyfikacji websocketowych Rozwiązany 2017-05-10 2017-05-10
Precedes Jupiter - Zadanie #1708: Rejestracja użytkowników jako odbiorców wiadomości Zamknięty 2017-05-10 2017-05-10

Associated revisions

Revision 935503ba
Added by Jarosław Bąbel almost 7 years ago

refs #1670 konfiguracja wbudowanego brokera activemq w serwisach, połączenie brokera z websockets

Revision cd368982
Added by Jarosław Bąbel almost 7 years ago

refs #1670 konfiguracja JmsMessagingTemplate do obsługi topiców po stronie serwisów

Revision 52368de9
Added by Jarosław Bąbel almost 7 years ago

refs #1670 w serwisie notyfikacji ogólny interfejs JmsMessagingOperation zamiast implementacji JmsMessageTemplate

Revision eb8ea791
Added by Jarosław Bąbel almost 7 years ago

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

Revision a1bc3880
Added by Jarosław Bąbel almost 7 years ago

refs #1670 wydzielenie konfiguracji brokera activemq

Revision d8344893
Added by Jarosław Bąbel almost 7 years ago

refs #1670 przeniesienie konfiguracji do pakietu config, usunięcie jednego "ostrzeżenia" w kodzie

Revision 64cd636f
Added by Jarosław Bąbel almost 7 years ago

refs #1670 możliwość rejestracji wielu odbiorców (topiców) dla jednej klasy wiadomości, śledzenie i wyrejestrowywanie rejestracji

Revision 6cf61ca3
Added by Jarosław Bąbel almost 7 years ago

refs #1670 zmiana nazwy serwisu z notifications na messaging, wydzielenie pakietu na klasy wiadomości

Revision 592c1238
Added by Jarosław Bąbel almost 7 years ago

refs #1670 poprawki po mergu, drobne zmiany nazw

Revision 28bc4a70
Added by Jarosław Bąbel almost 7 years ago

refs #1671, #1670 poprawka NullPointera w testach - wysyłanie komunikatu bez autoryzacji, zmiana id rejestracji z sekwencji integerów na UUID

History

#1 Updated by Michał Komar about 7 years ago

  • Precedes Zadanie #1671: Obsługa notyfikacji websocketowych added

#2 Updated by Jarosław Bąbel almost 7 years ago

  • Status changed from Nowy to W toku

#3 Updated by Jarosław Bąbel almost 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 almost 7 years ago

  • Status changed from Testowanie to Odpowiedź
  • Assignee changed from Michał Komar to Jarosław Bąbel
  1. 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).
  2. W notification service zamienić JmsMessageOperations na MessageSendingOperations<String> albo wręcz MessageSendingOperations<T> i ugenerycznić całą klasę.
  3. Usunąć warningi.
  4. Wydzielić konfigurację brokera activemq na zewnątrz messaging configuration i ładować ją warunkowo, tak jak ActiveMQAutoConfiguration
  5. Dodać taką samą konfigurację dla artemis (powinno to być kilka linii, a będziemy mogli zobaczyć, jak działa)
  6. 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 almost 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 almost 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 almost 7 years ago

  • Precedes Zadanie #1708: Rejestracja użytkowników jako odbiorców wiadomości added

#8 Updated by Michał Komar almost 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 almost 7 years ago

  • Status changed from Odpowiedź to Testowanie
  • Assignee changed from Jarosław Bąbel to Michał Komar

#10 Updated by Michał Komar almost 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 almost 7 years ago

  • Status changed from Odpowiedź to Testowanie
  • Assignee changed from Jarosław Bąbel to Michał Komar

Zmieniłem registrationId na UUID.

#12 Updated by Michał Komar almost 7 years ago

  • Status changed from Testowanie to Rozwiązany

Ok

Also available in: Atom PDF