IBM WebSphere MQ Series (WMQ)
IBM's Message Queue product (developed in
IBM's Hurley Labs in the UK) has the largest market share of any messaging middleware solution.
Its full name was "IBM WebSphere MQSeries" because it runs on WebSphere servers.
Recently, IBM dropped the "Series" for v6.0.
The MQ product consist of three major components operating independently of each other:
- MQ Server
- MQ Queue Manager
- MQS Clients, which maintain synchronous communication / connection with the Queue Manager.
It can participate in local but not global units of work involving MQSeries resources.
Servers transmit messages communicate via channels — each
a unidirectional link between a MCA (Message Channel Agent) on each queue manager
at each end of the communicating channel.
MQ messages can be as large as 100MB with v6.0, its latest release.
Several Queue Managers can be clustered so that each queue manager
can access the queues of all other queue managers
through Cluster-sender and Cluster-receiver channels rather than
remote queue definitions.
Information about clusters are held in a SYSTEM CLUSTER REPOSITORY QUEUE
and exchanged through a SYSTEM CLUSTER COMMAND QUEUE.
MQSeries uses the Message Channel Protocol (MCP) to ensure delivery.
MQI Calls
Applications using the WMQ API (MQI) issue 13 different calls:
- MQCONN connects an application program to a queue manager.
- MQCONNX returns a unique connection handle.
- MQOPEN opens the object before an inquiry, set, get, or put command could be executed on it
- MQPMO MQPUT to put messages on queues
- MQGMO MQGET to take them from queues.
- MQPUT1 places messages onto a queue that is already open.
- MQCLOSE closes application objects.
- MQDISC disconnects connections between an application and a queue manager.
- MQINQ inquires on the MQSeries object settings.
- MQSET sets values for attributes of these objects.
- - 13. Synpoint
commands.
MQ Message Descriptors
MQ messages also contain a Message Descriptor (MQMD)
which contains metadata about (properties of) the message and its application data:
- persistence,
- priority,
- message id,
- correlation id, which provides a reference to a particular topic
- report,
- feedback,
- reply to queue,
- reply to qmanager,
- expiry,
- group id,
- message sequence number,
- offset,
- format,
- encoding and
- coded character set id
Queue Management Commands
A queue manager can be created using the command:
crtmqm -q QMgrName
(-q specifies the default queue manager)
-lc (use circular logging),
-ll (use linear logging),
-lf (specify size of log file)
-lp (specify directory to hold log files) can be passed with the crtmqm command
A queue manager can be deleted using the command:
dltmqm QMgrName
A queue manager can be started using the command:
strmqm QMgrName
If the queue manager is started for the first time, default objects are usually created.
A queue manager's objects can be inquired about, defined, and altered using the command:
mqsc QMgrName
this accepts standard input and standard output options
Attributes of a queue can be displayed by specifying
Attribute values can be altered using the ALTER command.
Queues can be deleted using the DELETE command.
Types of Queues
MQ products manage queues (resources):
- Local queues are local to a queue manager. Thid creates a local queue
with a put and get enabled option, a persistence option and maximum depth and maximum message length specified as 1000 and 2000 respectively
DEFINE QLOCAL (MY_QUEUE) REPLACE + DESCR (" A Local Queue") + PUT (ENABLED) GET (ENABLED)
+ DEFPSIST (YES) SHARE + MAXDEPTH (1000) MAXMSGL (2000)
- Remote (Distributed) Queues
DEFINE QREMOTE (RQ1) + RNAME (YYY) RQMNAME (QM2)
RNAME refers to the remote queue manager named RQ1
RQMNANE is the name of the remote queue
- Alias Queue which references another local queue or a local definition of a remote queue
can be defined using this:
DEFINE QALIAS (XXX) TARGQ (YYY)
- Model queues are used as a template to create dynamic queues:
DEFINE QMODEL (ANSQ) DEFTYPE (TEMPDYN)
- Dynamic queues can be permanent or temporary in that they do not survive a queue manager restart.
DEFINE QMODEL (ANSQ) DEFTYPE (TEMPDYN)
- Transmission queue
DEFINE QLOCAL (QM1) USAGE (XMITQ)
- A Dead Letter queue is used when either a destination queue is not available or
when application data conversion fails at the sending end. There is a SYSTEM DEFAULT DEAD LETTER QUEUE.
Other topics of functionality:
- Triggering
- MQGMO segmentation options
- Message data translation
- Reporting
- Functional Sequence
- Message groups and Segmented Messages
- Distribution Lists
- MQ Security
|
|
Tek-Tips forum on MQ Series
Training classes on MQ Series from:
MQ Series Workflow
Distributed Computing with IBM(r) MQSeries
(John Wiley & Sons; Bk&CD Rom edition, October 25, 1996)
by Leonard Gilman, Richard Schreiber, Len Gilman
Achieving Production Quality Messaging article
by Nancy Cox at Network Computing magazine
PC Networking slideshow
IBM's MQ newsgroup and
HTML Forum
Message Queue User Group UK
Other members of IBM's MQSeries family of product provide specialized functionality:
- MQSeries Adapter provides the framework and tools to build and customize MQSeries adapters for existing and new, pre-packaged or custom-developed applications.
- MQSeries Integrator — IBM WebSphere Business Integration Message Broker and WebSphere Business Integration Event Broker (MQSI) —
is an information broker providing for message transformation and information flow modeling across multiple and different business systems.
- MQSeries Everyplace interfaces to mobile protocols and devices.
- MQSeries Workflow enables the definition, execution and swift change of complete business processes.
IBM made MQ open for others to integrate with it (the 'glue' that bonds together many disparate platforms and technologies):
IBM's MQWare is for independent software vendors (ISVs) and Internet Service Providers (ISPs)
to embed IBM's MQSeries messaging technology in shrink-wrapped Windows NT-based applications.
According to a
July 1997 news release:
The product provides assured, "once only" message delivery between instances of a message-enabled application
(e.g., it ensures information is not lost between servers using MQWare to issue "send and forget" messages
between instances of their application in an NT Server-based network).
MQWare was the first product to conform to the Business Quality Messaging concept,
a set of standard APIs for suppliers to guarantee messaging delivery.
Shanky Tiwari January 2002 article at Developer 2.0
|
|