@startuml
skinparam monochrome true
'scale 10

'left to right direction

rectangle "GIT Repo"
'rectangle "Spring Cloud Config Server"
'rectangle "RabbitMQ"

node "Application A" {
'  rectangle "RefreshListener" as RefreshListenerA
'  rectangle "Spring Cloud Config Client" as SpringCloudConfigA
  rectangle "Spring Cloud Config Server" as SpringCloudConfigServerA
'  [RefreshListenerA] -u-> [SpringCloudConfigA]: Refresh
'  [SpringCloudConfigA] -u-> [SpringCloudConfigServerA]
}

node "Application B" {
'  rectangle "RefreshListener" as RefreshListenerB
'  rectangle "Spring Cloud Config Client" as SpringCloudConfigB
  rectangle "Spring Cloud Config Server" as SpringCloudConfigServerB
'  [RefreshListenerB] -u-> [SpringCloudConfigB]: Refresh
'  [SpringCloudConfigB] -u-> [SpringCloudConfigServerB]
}


[GIT Repo] <-u- [SpringCloudConfigServerA]: GIT Pull
[GIT Repo] <-u- [SpringCloudConfigServerB]: GIT Pull
'[GIT Repo] --> [Spring Cloud Config Server] : Webhook POST /monitor
'[Spring Cloud Config Server] -u-> [RabbitMQ]: Refresh event
'[SpringCloudConfigA] -u-> [Spring Cloud Config Server]
'[SpringCloudConfigB] --> [Spring Cloud Config Server]
'[RabbitMQ] -l-> [RefreshListenerA]: Refresh event
'[RabbitMQ] -l-> [RefreshListenerB]: Refresh event

@enduml
