Documentation/Messaging: Difference between revisions
From Commontk
Jump to navigationJump to search
PatrickCheng (talk | contribs) m (→Solution) |
No edit summary |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
This document was written during the Georgetown Hackfest. In the meantime, a message broker solution has been implemented in the CTK Plugin Framework. A [[Documentation/CTK_Plugin_EventAdmin_local | in-process implementation]] is available and an [[Documentation/CTK_Plugin_EventAdmin_remote | out-of-process implementation]] is available for experimentation. | |||
=Use cases= | =Use cases= | ||
==Event Management == | ==Event Management == | ||
Line 26: | Line 28: | ||
#* [http://www.zeromq.org/ ZeroMQ] is a small and fast implementation of the [http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol Advanced Message Queuing Protocol] under the LGPL license | #* [http://www.zeromq.org/ ZeroMQ] is a small and fast implementation of the [http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol Advanced Message Queuing Protocol] under the LGPL license | ||
#* It supports both synchronous and asynchronous messaging mode | #* It supports both synchronous and asynchronous messaging mode | ||
#* It supportsTCP, | #* It supportsTCP, multicast/PGM, inter-process, and inter-thread transportation | ||
#* 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 |
Latest revision as of 06:19, 28 November 2011
Home < Documentation < MessagingThis document was written during the Georgetown Hackfest. In the meantime, a message broker solution has been implemented in the CTK Plugin Framework. A in-process implementation is available and an out-of-process implementation is available for experimentation.
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
- Synchronization: Window/Leveling events in one window should be synchronized across all viewer windows
- 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
- UseMessage Broker for event management
- Use Message Bus and Publisher/Subscriber design pattern for system integration
Implementation
- Message layer: OpenIGTLink
- OpenIGTLink defines many common data format and message structure
- It has plain vanilla socket support, might switch to ZeroMQ for transportation
- Transportation layer abstraction: ZeroMQ
- ZeroMQ is a small and fast implementation of the Advanced Message Queuing Protocol under the LGPL license
- It supports both synchronous and asynchronous messaging mode
- It supportsTCP, multicast/PGM, inter-process, and inter-thread transportation
- CMake version of library can be found here http://github.com/PatrickCheng/zeromq2
- API can be found here http://api.zeromq.org/zmq.html