THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
Class Diagrams
PlantUML |
---|
skinparam dpi 80
@startuml
hide empty members
title Server to Client Queues - Class Diagram
class CacheClientNotifier {
Singleton for a Cache.
}
class CacheClientProxy {
One for each client.
Keeps track of a the subsriptions for the client.
}
class MessageDispatcher {
Thread that reads events from the queue.
}
class HARegionQueue {
Holds the list of events to
dispatch to a single client.
}
class HAContainerMap {
Holds the actual values for events to dispatch.
Used to store only a single copy of each value
across all queues.
}
interface HAContainerMap
CacheClientNotifier o-- CacheClientProxy
CacheClientProxy o-- MessageDispatcher
CacheClientNotifier o-- HAContainerMap
MessageDispatcher o-- HARegionQueue
HARegionQueue --> HAContainerMap
HARegionQueue o-- HARegion
@enduml |
...
Sequence Diagrams
PlantUML |
---|
skinparam dpi 80
title Put into Queue (for Partitioned Regions)
actor user
user -> "PR Primary" : put
"PR Primary" -> "PR Secondary" : UpdateMessage
"PR Primary" -> "Adjunct Receiver": PutMessage
note right
The primary notifies all members that have
clients with interest
end note
"PR Primary" -> CacheClientNotifier: notifyClients()
"Adjunct Receiver" -> CacheClientNotifier: notifyClients()
note right
All members with interest
call notifyClients locally
end note
"PR Secondary" -> CacheClientNotifier: notifyClients()
CacheClientNotifier -> CacheClientProxy: deliverMessage()
CacheClientProxy -> MessageDispatcher : enqueueMessage()
MessageDispatcher -> HARegionQueue: basicPut()
|