-
Notifications
You must be signed in to change notification settings - Fork 5
/
MessageFlow.puml
58 lines (51 loc) · 1.61 KB
/
MessageFlow.puml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
@startuml
<style>
Title {
Margin 30
FontSize 30
}
</style>
title
Archelon ↔ Plastron
Asynchonous Job Information Flow
end title
component "Archelon Server" as Archelon {
component ImportJobsForm
component ImportJobsController {
rectangle import << Method >>
rectangle status_update << Method >>
}
component ImportJobsChannel
}
component "DelayedJob Worker" as DelayedJob << Rake Task >> {
rectangle SendStompMessageJob << ActiveJob >>
rectangle ImportJobStatusUpdatedJob << ActiveJob >>
}
component ActiveMQ {
queue "/queue/plastron.jobs" as Jobs
queue "/topic/plastron.job.progress" as JobProgress << Topic >>
queue "/queue/plastron.job.status" as JobStatus
}
component "Plastron Daemon" as Plastron {
rectangle CommandListener
rectangle MessageProcessor
rectangle AsynchronousResponseHandler
}
component "STOMP Listener" << Rake Task >> {
rectangle StompListener
}
ImportJobsForm ..> import : job id
import ..> SendStompMessageJob : job request
SendStompMessageJob ..> Jobs : STOMP message
Jobs ..> CommandListener : command message
JobProgress <.. MessageProcessor : progress message
JobStatus <.. AsynchronousResponseHandler : status message
CommandListener .> MessageProcessor : command
MessageProcessor .> AsynchronousResponseHandler : processing result
StompListener <.. JobProgress : STOMP message
StompListener <.. JobStatus : STOMP message
status_update <.. StompListener : job id
ImportJobStatusUpdatedJob <.. status_update : job
ImportJobsChannel <.. ImportJobStatusUpdatedJob : job status
ImportJobsForm <.. ImportJobsChannel : job status
@enduml