Big refactoring #77
66
doc/schema/Notification.puml
Normal file
66
doc/schema/Notification.puml
Normal file
@@ -0,0 +1,66 @@
|
||||
@startuml
|
||||
title Notification
|
||||
|Server|
|
||||
partition Event {
|
||||
start
|
||||
:Article is modified;
|
||||
:Send message to "notification" exchange (RabbitMQ);
|
||||
:RabbitMQ send message to "push" and "email" queue;
|
||||
stop
|
||||
}
|
||||
split
|
||||
partition Email {
|
||||
-[hidden]->
|
||||
:Consume "email" queue<
|
||||
repeat :get next notification;
|
||||
:Get followers of article from DB;
|
||||
while (loop on followers)
|
||||
:Send email to the citizen>
|
||||
endwhile
|
||||
:ACK>
|
||||
repeat while()
|
||||
detach
|
||||
}
|
||||
splitagain
|
||||
partition Push {
|
||||
-[hidden]->
|
||||
:Consume "email" queue<
|
||||
repeat :get next notification;
|
||||
:Get followers of article from DB;
|
||||
while (loop on followers)
|
||||
:Send notification message to redis>
|
||||
endwhile
|
||||
:ACK>
|
||||
repeat while()
|
||||
detach
|
||||
}
|
||||
splitagain
|
||||
partition "Notification direct" {
|
||||
-[hidden]->
|
||||
|Client|
|
||||
start
|
||||
:Client arrive on the web site;
|
||||
:Connect to the websocket;
|
||||
|Server|
|
||||
:Get citizen notification
|
||||
from redis;
|
||||
while (on each notifications)
|
||||
:Send notification to websocket>
|
||||
endwhile(no notification left)
|
||||
|Client|
|
||||
:show notification;
|
||||
|Server|
|
||||
:Subscribe to redis event;
|
||||
repeat :On new notification;
|
||||
:Get new notification from redis;
|
||||
:Send notification to websocket>
|
||||
|Client|
|
||||
:show notification;
|
||||
|Server|
|
||||
repeat while (wait notification)
|
||||
detach
|
||||
}
|
||||
endsplit
|
||||
|
||||
|
||||
@enduml
|
||||
Reference in New Issue
Block a user