Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "OSEE/Design/Messaging"

(Messages)
(10/20/09)
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
=Messaging System Design Notes=
 
=Messaging System Design Notes=
  
[[Category:OSEE]][[Category:Design]][[Category:Messaging System]]
+
== 10/20/09 ==
 +
 
 +
===Concepts===
 +
 
 +
* Message:
 +
* Topic:
 +
* Component:
 +
* Queue:
 +
* Transport:
 +
* Camel:
 +
* ActiveMQ:
 +
* Broker:
 +
* Event:
 +
* Message Transaction:
 +
 
 +
===Requirements===
 +
 
 +
#Register Listener
 +
#Message Types
 +
##Status messages
 +
##Commands
 +
##Operation in progress
 +
##Operation complete
 +
##Cancel Operation messages
 +
##Control Messages - communication between app servers?
 +
#Provide interim progress information
 +
#Web Service Interaction
 +
 
 +
== Use Cases ==
 +
# Web page sends a message with JSON object. Broker converts HTTP to JMS message
 +
sends to all subscribers.
 +
# Application kicks an operation and is able to sync on message receives.
 +
# Broker comes alive, clients connect to broker and broker redirects client to appropriate application server
 +
 
 +
== TODO ==
 +
# Document App Server Messages/Interactions
 +
# Add Sequence Diagram for Messages
 +
 
 +
 
 +
= Events versus Messages =
 +
Events: inter-process communication
 +
Messages: enterprise wide communication
 +
 
  
==What is the broker topology==
+
===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.
 
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==
+
===What are the topics/queue names, what are their functions, and how do we use them===
  
===CONSIDERATIONS:===
+
====CONSIDERATIONS:====
 
#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.  
 
#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.  
 
#topic - used for status - broadcast - pubsub
 
#topic - used for status - broadcast - pubsub
  
==Messages==
+
===Messages===
  
====queue:OSEE.persistence.createBranch====
+
==== CORE ====
 +
 
 +
=====queue:OSEE.CORE.createBranch=====
 
*subscribers: appServers
 
*subscribers: appServers
 
*publishers: oseeClients
 
*publishers: oseeClients
  
====topic:OSEE.persistence.newBranch====
+
=====topic:OSEE.CORE.newBranch=====
 
*subscribers: oseeClients
 
*subscribers: oseeClients
 
*publishers: appServers
 
*publishers: appServers
+
 
====topic:OSEE.OTE.station.global.statusRequest====
+
==== OTE ====
 +
 
 +
=====topic:OSEE.OTE.station.global.statusRequest=====
 
*subscribers: oteTestServers
 
*subscribers: oteTestServers
 
*publishers: oteTestClients
 
*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..)
 
*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====
+
=====topic:OSEE.OTE.station.global.statusResponse=====
 
*subscribers: oteTestClients
 
*subscribers: oteTestClients
 
*publishers: oteTestServers
 
*publishers: oteTestServers
 
*purpose: the response message to a 'OSEE.OTE.station.global.statusRequest', contains configuration and state information of a test server  
 
*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====
+
=====topic:OSEE.OTE.station.<station_name>.<station_id>.status=====
 
*subscribers: connected-oteTestClients  
 
*subscribers: connected-oteTestClients  
 
*publishers: specific-oteTestServers
 
*publishers: specific-oteTestServers
 
*purpose: update of current state, errors, test point, current command, etc...
 
*purpose: update of current state, errors, test point, current command, etc...
 
 
====topic:OSEE.OTE.station.<station_name>.<station_id>.command====
+
=====topic:OSEE.OTE.station.<station_name>.<station_id>.command=====
 
*subscribers: specific-oteTestServers
 
*subscribers: specific-oteTestServers
 
*publishers: connected-oteTestClients
 
*publishers: connected-oteTestClients
 
*purpose: command the ote environment to do something
 
*purpose: command the ote environment to do something
  
====topic:OSEE.OTE.station.<station_name>.<station_id>.<model>.command====
+
=====topic:OSEE.OTE.station.<station_name>.<station_id>.<model>.command=====
 
*subscribers: specific-oteTestServers
 
*subscribers: specific-oteTestServers
 
*publishers: connected-oteTestClients
 
*publishers: connected-oteTestClients
 
*purpose: command a model to do something
 
*purpose: command a model to do something
  
====topic:OSEE.OTE.station.<station_name>.<station_id>.<model>.status====
+
=====topic:OSEE.OTE.station.<station_name>.<station_id>.<model>.status=====
 
*subscribers: connected-oteTestClients  
 
*subscribers: connected-oteTestClients  
 
*publishers: specific-oteTestServers
 
*publishers: specific-oteTestServers
 
*purpose: update of current state, errors, test point, current command, etc...
 
*purpose: update of current state, errors, test point, current command, etc...
 +
 +
[[Category:OSEE]][[Category:Design]][[Category:Messaging System]]

Latest revision as of 18:00, 20 October 2009

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...

Back to the top