Customer Requested Enhancement to MQMR

MQ Message Replication (MQMR) is an MQ API Exit. An MQ API Exit is configured to run within the queue manager’s address space (or the application’s address space if the application connects in bindings mode to the queue manager).

For MQMR v1.1.0, a customer requested that information be added to the replicated messages, so that the consumer application would know what the source queue manager names and source queue names were. This was done with via MQ’s named properties.

In MQMR v2.0.0, 2 auxiliary programs were added: mq2sdb and sdb2mq. These programs allowed the customer to offload replicated messages to an SQLite database and the ability to reload the message to a queue.

I also published the format of the tables in the SQLite database.

Recently, a customer requested that the source queue manager names and source queue names be written to the SQLite database. At first, I was a little reluctant to do it because I had published the format of the table in the SQLite database but then I realize that I could add 2 columns to the end of the table plus add 2 new tables to handle the information without affecting other customer’s applications.

(1) mq2sdb program has a new keyword called: IncludeSourceInfo. IncludeSourceInfo specifies whether or not the source queue manager name and queue name (if present) be written to the SQLite database. The default value is N.

(2) sdb2mq program has 3 new keywords: UseSelect, SelectQMgrName & SelectQName. UseSelect specifies whether or not the rows of the IBM_MQ_MESSAGES table will be selected by either queue manager name or queue name or both. The default value is N.

For those 3rd party applications that customers use to offload replicated messages from a target queue, here are the new tables in the SQLite database:

CREATE TABLE IBM_MQ_MESSAGES(Version            INT,
                             Report             INT,
                             MsgType            INT,
                             Expiry             INT,
                             Feedback           INT,
                             Encoding           INT,
                             CodedCharSetId     INT,
                             Priority           INT,
                             Persistence        INT,
                             BackoutCount       INT,
                             PutApplType        INT,
                             MsgSeqNumber       INT,
                             Offset             INT,
                             MsgFlags           INT,
                             OriginalLength     INT,
                             Format             CHAR(8),
                             ReplyToQ           CHAR(48),
                             ReplyToQMgr        CHAR(48),
                             UserIdentifier     CHAR(12),
                             ApplIdentityData   CHAR(32),
                             PutApplName        CHAR(28),
                             PutDate            CHAR(8),
                             PutTime            CHAR(8),
                             ApplOriginData     CHAR(4),
                             MsgId              BLOB,
                             CorrelId           BLOB,
                             AccountingToken    BLOB,
                             GroupId            BLOB,
                             Data               BLOB,
                             Source_QMgr_Id     INT,
                             Source_Queue_Id    INT );

CREATE TABLE SOURCE_QMGR_NAMES(Id               INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
                               QMgrName         CHAR(48) NOT NULL UNIQUE );

CREATE TABLE SOURCE_QUEUE_NAMES(Id              INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
                                QueueName       CHAR(48) NOT NULL UNIQUE );

I have completed a wide variety of tests and everything looks good. The customer is now also testing the latest release of MQMR.

If anyone would like to test out the latest release then send the email to support@capitalware.com

Regards,
Roger Lacroix
Capitalware Inc.

This entry was posted in Capitalware, Database, IBM i (OS/400), IBM MQ, Linux, MQ Message Replication, Unix, Windows.

Comments are closed.