Documentation/Messaging: Difference between revisions

From Commontk
Jump to navigationJump to search
No edit summary
Line 5: Line 5:
# Temporal calibration: Different components have different update frequency, a centralized manager can be used to filter UpdateEvents, so the whole system is updating at the same frequency
# Temporal calibration: Different components have different update frequency, a centralized manager can be used to filter UpdateEvents, so the whole system is updating at the same frequency


[[File:Amqp.jpg|thumb|none|300px|<big>AMQP model</big><br>Source: http://upload.wikimedia.org/wikipedia/en/9/9d/The-amqp-model-for-wikipedia.svg]]


==System Integration==
==System Integration==
Different system/application have different data format or are running on different physical devices. A event bus can be used for system integration
Different system/application have different data format or are running on different physical devices. A event bus can be used for system integration


=Implementation=
=Solution=
# Use[http://msdn.microsoft.com/en-us/library/ff648849(v=pandp.10).aspx Message Broker] for event management
# Use[http://msdn.microsoft.com/en-us/library/ff648849(v=pandp.10).aspx Message Broker] for event management
[[File:Amqp.jpg|thumb|none|300px|<big>AMQP model</big><br>Source: http://upload.wikimedia.org/wikipedia/en/9/9d/The-amqp-model-for-wikipedia.svg]]
# Use [http://msdn.microsoft.com/en-us/library/ff647328.aspx Message Bus] and [http://msdn.microsoft.com/en-us/library/ff649664(v=pandp.10).aspx Publisher/Subscriber] design pattern for system integration
# Use [http://msdn.microsoft.com/en-us/library/ff647328.aspx Message Bus] and [http://msdn.microsoft.com/en-us/library/ff649664(v=pandp.10).aspx Publisher/Subscriber] design pattern for system integration
[[File:Message bus.gif|thumb|none|300px|<big>Message Bus</big><br>Source: http://i.msdn.microsoft.com/dynimg/IC97398.gif]]
[[File:Messave bus and pub&sub.gif|thumb|none|300px|<big>Message Bus</big><br>Source: http://i.msdn.microsoft.com/dynimg/IC17158.gif]]
=Implementation=
# Message layer: [http://www.na-mic.org/Wiki/index.php/OpenIGTLink OpenIGTLink]
# Message layer: [http://www.na-mic.org/Wiki/index.php/OpenIGTLink OpenIGTLink]
#* OpenIGTLink defines many common data format and message structure
#* OpenIGTLink defines many common data format and message structure
Line 22: Line 27:
#*  CMake version of library can be found here http://github.com/PatrickCheng/zeromq2
#*  CMake version of library can be found here http://github.com/PatrickCheng/zeromq2
#* API can be found here http://api.zeromq.org/zmq.html
#* API can be found here http://api.zeromq.org/zmq.html
[[File:Message bus.gif|thumb|none|300px|<big>Message Bus</big><br>Source: http://i.msdn.microsoft.com/dynimg/IC97398.gif]]
[[File:Messave bus and pub&sub.gif|thumb|none|300px|<big>Message Bus</big><br>Source: http://i.msdn.microsoft.com/dynimg/IC17158.gif]]

Revision as of 20:36, 27 May 2010

Home < Documentation < Messaging

Use cases

Event Management

Each component/application generates many different types of events. A centralized event manager (Hub and Spoke) can be used to aggregate/dispatch events

  1. Synchronization: Window/Leveling events in one window should be synchronized across all viewer windows
  2. Temporal calibration: Different components have different update frequency, a centralized manager can be used to filter UpdateEvents, so the whole system is updating at the same frequency


System Integration

Different system/application have different data format or are running on different physical devices. A event bus can be used for system integration

Solution

  1. UseMessage Broker for event management
  1. Use Message Bus and Publisher/Subscriber design pattern for system integration

Implementation

  1. Message layer: OpenIGTLink
    • OpenIGTLink defines many common data format and message structure
    • It has plain vanilla socket support, might switch to ZeroMQ for transportation
  2. Transportation layer abstraction: ZeroMQ