@startuml

skinparam backgroundColor #EEEBDC
skinparam borderThickness 3.5

skinparam sequence {
rectangleBorderThickness 0.5
	 titleBorderRoundCorner 15
 titleBorderThickness 2
 titleBorderColor red
	ParticipantBackgroundColor Orange
	ParticipantBorderColor Orange
	ParticipantFontName Arial
	ParticipantFontSize 17
	ParticipantFontColor black
	LifeLineBorderColor green
	LifeLineBackgroundColor #a5e5d0
	ArrowColor black             
}

participant Server
participant Broker
participant Client

autonumber
Client -> Broker: <b>Subscribe to topic "SomeTopic/clientID/Subtopic"
note right of Client: <b> "Clients can be Subscribers or Publishers\n depending on the use case being executed.\n They will publish to and read\n from typically one source system (server)"
Broker --> Client: <i>Ack
Server -> Broker: <b>"Subscribe to SomeTopic/# / SomeTopic/Subtopic/#"
note left of Server: "Servers will usually publish to and read from many clients\n and so subscribe usually with a wild card like # or a\n subtopic and #"
Broker --> Server: <i>Ack
Server -> Broker: <b>The server publishes a message to a topic
Broker -> Client: <i> CallBack Notify broadcast to subscribed clients
Client <-> Broker: <i>Retrieve Message 
Client --> Broker: <i>Ack Message
Broker --> Server: <i>Ack Message





@enduml
