Версия, подходяща за принтиране
Кликни тук, за да видиш темата в оригиналният и вид
BG Development Форуми > Java > Вътрешни събития


Публикувано от: crazy_dog 21-06-2018, 12:40
Здравейте, колеги.
Пиша една система на Spring и съм стигнал до момента с генерирането на вътрешни събития (под вътрешни събития разбирайте: регистрация на нов потребител, създаване на задача, изтриване на задача, промяна статуса на задача и т.н). Идеята е, че за всяко настъпило събитие трябва да оповестявам определени потребители на системата.
Примерно:
Всички администратори трябва да бъдат оповестявани за всички събития.
Всички мениджъри трябва да бъдат оповестявани само за определени събитя които са свързани със техни проекти или със техни служители.

Това което ми идва като първоначална идея е да реализирам механика със subscribe-ване на потребители или групи от потребители за всяко събитие. Незнам до колко е удачно като идея, защото със времето системата ще се разширява и ми се иска event service-а да е максимално гъвкaв.

Някакви идеи ?

Поздрави

Публикувано от: 40oz 21-06-2018, 14:00
Таймери. Не слушай каков ще ти кажат след мен.

Публикувано от: crazy_dog 21-06-2018, 14:19
? icon_eek.gif

Публикувано от: kierenski 22-06-2018, 08:40
Ползвай опашки подобно на email листите.
Имаш една опашка от събития към която всички добавят и един цикъл който слуша за нови събития и разпределя/добавя към различните опашки на различните потребители.

Публикувано от: Gamma Goblin 22-06-2018, 08:59
разпределена ли е тая система или не ?

Публикувано от: crazy_dog 22-06-2018, 09:19
@Gamma Goblin
Ако говориш за microservices, не е.

Публикувано от: Gamma Goblin 22-06-2018, 09:28
ами тогава ръгай ивентите в една база от данни, като там си записваш какво е това събитие и за кой е предназначено

След това имаш 2 опции в зависимост от изискванията:

* ако е тип "facebook" известяване, тоест пасивно, като се логне човека или като зареди някоя страница, правиш един селект върху тая таблица и му казваш “имаш 20 нотификации, земи ги прочети“

* ако искаш активно известяване, то най-лесно е да въртиш един цикъл през Х секунди по тая таблица който да разпраща СМСи, мейли и т.н. Например JIRAта прави нещо подобно като разпраща нотификациите през 1 минута.

Публикувано от: Lachezar 22-06-2018, 14:00
Лесен вариант без дълготрайно съхранение и без разпределение:
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/ApplicationEvent.html

По-стандартен вариант, с възможности за съхранение и разпределение:
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jms/core/package-summary.html
В комбинация с примерно Apache Artemis или Apache ActiveMQ, или друга реализация.

Публикувано от: Gamma Goblin 22-06-2018, 15:36
QUOTE
Apache Artemis или Apache ActiveMQ,
и двата проекта са мъртви


QUOTE
без дълготрайно съхранение
Не е fault tolerant icon_sad.gif

Публикувано от: fast_user 22-06-2018, 16:33
Той и windows e мъртъв ама милиони все още го ползват.

Публикувано от: lucky 22-06-2018, 17:26
QUOTE (Gamma Goblin @ 22-06-2018, 15:36)
QUOTE
Apache Artemis или Apache ActiveMQ,
и двата проекта са мъртви


Що бе? ActiveMQ има release от тая година.

Публикувано от: Lachezar 22-06-2018, 18:23
QUOTE (Gamma Goblin @ 22-06-2018, 15:36)
QUOTE
Apache Artemis или Apache ActiveMQ,
и двата проекта са мъртви

Horse-Shale.

Artemis:
https://git-wip-us.apache.org/repos/asf?p=activemq-artemis.git;a=tags
Последна версия от преди три дни.

ActiveMQ:
https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tags
Последна версия от преди пет седмици. За зрял проект е повече от нормално.

Публикувано от: crazy_dog 24-06-2018, 19:29
Благодаря на всички за предложениятa.
Мисля да последвам съвета на @Gamma Goblin.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)