blob: 72ccc2b19f22bb85b568f0bec4e2277c8783fbcb [file] [log] [blame] [view]
# Messaging System Design Notes
## 10/20/09
### Concepts
- Message:
- Topic:
- Component:
- Queue:
- Transport:
- Camel:
- ActiveMQ:
- Broker:
- Event:
- Message Transaction:
### Requirements
1. Register Listener
2. Message Types
1. Status messages
2. Commands
3. Operation in progress
4. Operation complete
5. Cancel Operation messages
6. Control Messages - communication between app servers?
3. Provide interim progress information
4. Web Service Interaction
## Use Cases
1. Web page sends a message with JSON object. Broker converts HTTP to
JMS message
sends to all subscribers.
1. Application kicks an operation and is able to sync on message
receives.
2. Broker comes alive, clients connect to broker and broker redirects
client to appropriate application server
## TODO
1. Document App Server Messages/Interactions
2. Add Sequence Diagram for Messages
# Events versus Messages
Events: inter-process communication Messages: enterprise wide
communication
### What is the broker topology
network of brokers, host1 + host2 + host3, we need to make sure ote can
function w/o the DB layer available... so i want to make sure we can run
with a network of brokers, and it has to be easily configurable so that
platforms not using the persistence layer can function. Potentially in
some cases we launch an embedded broker.
### What are the topics/queue names, what are their functions, and how do we use them
#### CONSIDERATIONS:
1. queue - used for app server commands - it gets removed by the first
consumer to get it, so if there are multiple subscribers only one
will act upon the message.
2. topic - used for status - broadcast - pubsub
### Messages
#### CORE
##### queue:OSEE.CORE.createBranch
- subscribers: appServers
- publishers: oseeClients
##### topic:OSEE.CORE.newBranch
- subscribers: oseeClients
- publishers: appServers
#### OTE
##### topic:OSEE.OTE.station.global.statusRequest
- subscribers: oteTestServers
- publishers: oteTestClients
- purpose: sent by test clients to find out information about
available test servers, i.e. who exists, in what configuration,
current state (connected clients, etc..)
##### topic:OSEE.OTE.station.global.statusResponse
- subscribers: oteTestClients
- publishers: oteTestServers
- purpose: the response message to a
'OSEE.OTE.station.global.statusRequest', contains configuration and
state information of a test server
##### topic:OSEE.OTE.station.{station_name}.{station_id}.status
- subscribers: connected-oteTestClients
- publishers: specific-oteTestServers
- purpose: update of current state, errors, test point, current
command, etc...
##### topic:OSEE.OTE.station.{station_name}.{station_id}.command
- subscribers: specific-oteTestServers
- publishers: connected-oteTestClients
- purpose: command the ote environment to do something
##### topic:OSEE.OTE.station.{station_name}.{station_id}.{model}.command
- subscribers: specific-oteTestServers
- publishers: connected-oteTestClients
- purpose: command a model to do something
##### topic:OSEE.OTE.station.{station_name}.{station_id}.{model}.status
- subscribers: connected-oteTestClients
- publishers: specific-oteTestServers
- purpose: update of current state, errors, test point, current
command, etc...