MOM
indigoo.com
MESSAGE ORIENTED
MIDDLEWARE
OVERVIEW OF MESSAGE ORIENTED MIDDLEWARE
TECHNOLOGIES AND CONCEPTS
Peter R. Egli
INDIGOO.COM
1/25
Rev. 2.20
indigoo.com
Contents
1.
2.
3.
4.
5.
6.
7.
8.
2/25
Rev. 2.20
indigoo.com
Client
1: Remote call
Client is
blocked
3: Return
Server
1: Remote call
2. Server
processes
request
3: Callback
Client is
blocked
2. Server
processes
request
4: Callback return
5: Return remote call
3/25
Rev. 2.20
indigoo.com
Sending system
Sending
application
Receiving system
Non-blocking
message
send operation
Send queue
Receive queue
Analogy:
Synchronous (RPC/DOT)
Telephone
Asynchronous (MOM)
Receiving
application
Network
4/25
Rev. 2.20
indigoo.com
2. Messaging models
1. P2P - Point to Point:
1 queue per receiver (application).
One-to-one (1 sender, 1 receiver) or many-to-one messaging (many senders, 1 receiver).
Sending
application
Receiving
application
Sending
application
1
Sending
application
Receive
message
Publish
message
2
Publish
message
Message
board
Receiving
application
Receive
message
Receiving
application
Subscribe
Peter R. Egli 2015
5/25
Rev. 2.20
indigoo.com
Receiving
application
Priority queues:
Messages are buffered in FIFO queues and ordered based on priority.
N.B.: The ordering applies to the set of messages that are in the queue at a specific
point in time (= messages that are not yet received by an application).
Sending
application
3
Prio 1
2
Prio 3
1
Prio 2
2
Messages
Prio 3
are re-ordered
based on their
priority
1
Prio 2
Receiving
application
Prio 1
6/25
Rev. 2.20
indigoo.com
Journal queue:
The message queueing system keeps a copy of every received message for logging or
monitoring purposes.
Dead-letter queue:
Queue that holds undeliverable messages (messages that time out due to time-to-live (TTL)
expiry or whose queue address could not be resolved).
7/25
Rev. 2.20
indigoo.com
Application
Bidirectional connections:
6 systems 6 * 5 / 2 = 15 connections
Application
Application
Application
Application
8/25
Rev. 2.20
indigoo.com
Application
Application
Application
Application
Application
9/25
Rev. 2.20
indigoo.com
Application
Application
Application
Application
Application
Application
Application
10/25
Rev. 2.20
indigoo.com
Sending
application
Publish
message
Receive
message
Receiving
application
Broker
Sending
application
2
Publish
message
Receive
message
Receiving
application
11/25
Rev. 2.20
indigoo.com
12/25
Rev. 2.20
indigoo.com
13/25
Rev. 2.20
indigoo.com
14/25
Rev. 2.20
indigoo.com
Sending
application
Persistent
queue
Peter R. Egli 2015
Receiving
application
Network
(TCP/IP)
Persistent
queue
15/25
Rev. 2.20
indigoo.com
Host A
Application A
Application B
Host B
(queue manager for appl. B
is located on another host)
Host C
Queue Manager B
Queue Manager A
Host D
Network
Message
Channel Agent
Message channel
Message
Channel Agent
QM D
Message channel
16/25
Rev. 2.20
indigoo.com
Spoke
QM
Client
appl.
Hub
QM
Spoke
QM
Client
appl.
Server
appl.
Spoke
QM
Client
appl.
Spoke
QM
Spoke
QM
17/25
Rev. 2.20
indigoo.com
2.2 Tree:
Trees allow reducing the number of channels between the QMs.
18/25
Rev. 2.20
indigoo.com
19/25
Rev. 2.20
indigoo.com
20/25
Rev. 2.20
indigoo.com
User
Message exchange:
Exchanges receive
messages and dispatch
these to queues.
Binding:
Defines the routing
of messages
to a message queue.
Message queue
21/25
Rev. 2.20
indigoo.com
App
Sensor
Node
Peter R. Egli 2015
App
MQTT
Broker
Application
App
Actor
Node
22/25
Rev. 2.20
indigoo.com
JMS
MSMQ
AMQP
Dead-letter queue
Yes
Yes
Yes
Journal queue
~ Persistent messages
Topics
* Topics (pubsub)
* Fanout (send to all bound rx queues)
Message routing
Security
Yes (SASL)
Yes
No
AD:
Active Directory
QoS: Quality of Service (features for guaranteeing delivery)
SASL: Simple Authentication and Security Layer (RFC4422)
23/25
Rev. 2.20
indigoo.com
JMS
MSMQ
AMQP
Message transactions
Yes
Yes
Yes
Receive triggers
Yes
Message formatting
Acknowledgment types
3 acknowledgment types /
modes defined
SCTP: Stream Control Transmission Protocol (RFC4960), connection-oriented transport protocol with better characteristics than TCP
SPX:
Sequenced Package Exchange (legacy Novell transport protocol)
24/25
Rev. 2.20
indigoo.com
MOM message
SMTP message
Message queue
Mailbox
Consumer
Producer
SMTP client
Queue manager
Routing key
Publish / subscribe
Mailing list
Message filter
Message acknowledge
Transactional messaging
Not available
TTL
25/25
Rev. 2.20