Messaging is a technology that enables high-speed, asynchronous, program-to-program communication with reliable delivery.
Reasons to use Messaging
- Remote communication
- Platform and Language Integration
- Asynchronous Communication - send and forget
- Variable Timing - allows sender to batch requests
- Throttling - allows receiver to control rate of consumption
- Reliable Communication
- Disconnected Operation
- Mediation - provides high number of distributed connections to a shared resource
- Thread Management - asynchronous operation prevents blocked thread
- Loosely coupled
- Data Format - use XML
- Location - logical channel - not knowing precisely where and which process is at the other end
- Time - logical channel using queue - removal of time dependency
- Platform Technology - taken care of by vendor system
Concerns for using messaging
- Complex programming model
- Sequence issue
- Performnance
Messaging Key Components
- Message Channel
- Point-to-point Channel
- Publisher-subscriber Channel
- Message End-point
- Message
Message Channels : Pathways for message transmission. Can be represented by database tables where data access layers serve as channel adapter, or can be provided by a package like MQ, where adapters are provided by vendor API.
Channel Adapter : A end point component that can attach to an application and publish message to a message channel. The application may or may not be aware of the presence of the adapter.
Enterprise Message Bus : A common message pathway where applications communicate with each other through sending and receiving of messages. Applications can be independently inserted and removed from the bus.
Message : Free format or XML. Common representation does not necessarily mean common semantic.
A message is transmitted in 5 steps
Create
Send
Deliver
Receive
Process
Sample Architecture
Multiple front office trade capture systems, each makes use of a post-trade SDK or TCP/IP connection, sending message through a dedicated channel adapter.
Channel adapters send messages through channels - channels could be database tables for individual trade capture systems or a aggregated table for all trades. These messages are raw messages with incompatible formats.
Messages are then sent through point-to-point channels to message translators, which translate the messages into common form using a canonical data model and wtire to a final point-to-point channel which is essentially a common table that holds generic trade records.
The common table serves as the persistent store to the central process manager which manages the progress of the trades.