| Need |
Features |
Comments |
| Enterprise
level messaging activity |
A
Multi-Threaded Architecture |
A
message broker has to be fast and reliable to support 24x7 activity.
They
must also be developed with 3GL standard such as C or C++,
to integrate a robust memory management, fully compiled for
maximum efficiency with no bottlenecks in the complete processing
of message brokering.
Every
task must have multiple parallel executions (task are network
protocol sensitive, execution of a local service, routing
messages between services, etc.)
|
|
Dynamic
Load balancing |
The
possibility to have multiple services performing the same kind
of message for scalability purpose. The first available service
will catch the next in-coming message. Services can be started
or stopped during online activities for a good tuning of the
distributed application scalability. |
|
Broker
proxies & multiplexing |
This
is the answer to scalability needs for message broker based
distributed architecture.
A
broker can be a proxy for different or other brokers ; any
kind of broker network can be designed even with proxy loops.
Broker proxies can be defined at broker, service, or message
level for a fine business exchange.
When
a message is posted to a broker, the broker looks around for
services to match the delivery conditions contained within,
if not the message is routed to the proxy brokers and so on.
Message
with infinite number of copies are distributed all around
the network. All routed message between 2 brokers uses the
same network connection (multiplexing).
|
| Guaranteed
delivery for Transactional messaging |
Guaranteed
delivery |
A
service sending an asynchronous message will get a receipt from
the broker. The message will be administrated, (persistency,
logging, mirroring), until the targeted service will execute
it. |
|
Once
and Only Once delivery |
A
transaction oriented message has to be delivered once to the
potential services able to execute it even with a load balanced
application architecture with multiple potential services performing
the same transaction. The message must deliver the exact number
of copies the transaction has to execute (only once or a predefined
number of times in replicated information systems). |
|
Persistency |
A
message with a copy number greater than 0 will stay in the broker
until its deletion (if requested). |
|
Asynchronous
& synchronous messaging |
A
service sends messages, either waits or does not wait for the
result of the execution of the attached events to the targeted
services. The communicating services have to be present simultaneously
in the network. |
|
Loosely
coupled asynchronous messaging |
This
is the full featured guaranteed delivery. Services can be independently
presents in the network, they put and get messages from message
broker whenever the sender or the receiver is absent. |
|
Notification
of waiting message |
A
service has to be informed when a message is waiting for it.
There are two ways to be inform : by a callback sent by the
message broker or by polling to get information from the message
broker. |
|
Distributed
transaction support |
A
service can be connected to multiple brokers at the same time
with different sessions to manage transaction oriented message. |
|
Logging
& multiple logging |
A
broker failure can happens, persistent messages have to be stored
in log file (better with multiple files on different systems)
for a guaranteed delivery by starting a new broker on these
log files. |
| Fault
tolerance |
Broker
mirroring & Automatic service reconnection
|
Logging
persistent message for guaranteed delivery is good but services
will be disconnected as for a Client connected to a DBMS when
a failure occurs. Restarting all services on a new broker take
a while and disappoints Internet / Intranet end-users. A broker
can be started as a mirror at any time for an other broker.
The main broker and its mirror share the same log files, when
the main fails all connected services are reconnected to the
mirror automatically and all the messaging activity is reloaded
to the mirror. The complete process take only few seconds. |
| TP
oriented messaging |
Local
service execution |
A
broker can dynamically load add-on services from libraries and
execute them in local threads. |
|
Security |
A
broker can refuse a service connection or message emission /
reception depending on service and message filter list and identification. |
| Intelligent
Information exchange |
Development
Languages integration |
The
architecture of the message broker is at the heart of the overall
system architecture but the way to access the messaging activity
not only has to be relevant to its context, but also the cost
and the complexity of a distributed application development
are conditioned by the robustness and the richness of the APIs. |
|
Raw
data exchanges |
The
API send data "AS IS" from the sender and the receivers
have to know the composition of the data stream. This data format
exchange is the proposed method of exchange by MQ products.
If this technique is good enough for transferring files, blob,
video, or character strings, it becomes insufficient when structured
objects are involved. |
|
Self
-describing structured datas exchanges |
The
API from the sender encode the structured object into an internal
format which will be decoded by the receiving API which automatically
recuperates the structured object, even between different host
languages and operating systems. |
|
Message
selection |
A
message broker exchanges objects between services encapsulated
in messages, for reliability. A service can get the envelope
of waiting message from the broker, (provenance, id, name, size
of encapsulated object, arrival date, etc.) and in any order,
not only FIFO. |
|
Publishing
messages & Subscribing to Messages |
Services
involved in the distributed application subscribe to messages
then want to be in copy and publish message for other services
subscribed for. |
|
Full
& controlled Multicasting |
A
service can send a message to a broker with few restriction
regarding the targeted services. The broker posts as many copies
of the message to services matching the designated criteria.
A
message can have limited copies (1 to infinite), and the first
service available will retrieve it.
|
| Mobile
computing integration |
Small
footprint for the complete product |
Mobile
computers are going to be an important part of distributed computing
architecture. A message broker have to be small to allow a complete
standalone installation on PCs or laptop. |
|
Local
Message Database keeping previous or default answer message
when targeted services are not reachable |
In
the case when a service posts a message to a broker for the
execution of an event on an other broker. If the targeted service
is not available, the broker checks if the answer to the message
is available within "persistent messages", ( the broker
can also look first in persistent message then to an available
service to execute the message). |