This kind of thinking should be mandatory - if you care enough about
your MQ message to use make it persistent and use syncpointing, then you
should also care enough to log details of it at every point that an app
tinkers with it.  Support people / developers have a far easier time
avoiding the finger-pointing, and bean counters can ask for all kinds of
numbers to be generated from the log records.

Darren


Roger Lacroix wrote:
Hi,

Actually, I recently designed and built some middleware glue to do just that for a client.

The message flow was:
1) External client -> (A) transformation engine (B) -> Business logic
2) Business logic -> (C) transformation engine (D) -> External client

I wrote some Java middleware that the transformation engine called to do the MQ messaging (points A, B, C & D). A complete transaction included a request message ('1') and a response message ('2'). There are also cases where a 'one-way' response is sent to the external client ('2').

In both cases, each transaction has a unique transaction ID.

The Java middleware glue uses an Oracle table to record everything and it is keyed off the unique transaction ID.

Java middleware glue description:

- Point A inserts a record into the table with column 'ClientIn' with the current time

- Point B puts a message to a queue with COA & COD, a special 'Reply-To-Q', ApplicationData has the transaction ID and AccountingToken has the 'DB ColumnName'. It also updates the column 'BusinessIn' with the current time of the DB record.

- Point C updates the record in the table with column 'BusinessOut' with the current time

- Point D puts a message to a queue with COA & COD, a special 'Reply-To-Q', ApplicationData has the transaction ID and AccountingToken has the 'DB ColumnName'. It also updates the column 'ClientOut' with the current time of the DB record.

All of the COAs and CODs go to the same special 'Reply-To-Queue'. I wrote a Java Daemon ('CO Daemon') that handles reading all of the incoming COAs and CODs. It runs 7/24.

Now the real trick: When MQ sends either a COA or COD, it includes the MQMD values from the original message.

So the Java 'CO' Daemon reads a message from the 'Reply-To-Q' and retrieves the transaction ID from the ApplicationData field and retrieves the ColumnName from the AccountingToken field and then updates the appropriate column's COA or COD field of the DB record.

To make this middleware glue super fast, every night all records in the 'current table' are moved to the history table'.

I also wrote a simple GUI interface to lookup transactions in the database. So when an external client or the business people phone about a 'lost message', we ask for the transaction ID and in 2 seconds we know the complete history of the transaction.

Of course, now that people are getting used to having this information, the client has asked for alerts to be generated if 'client hasn't picked up their message in 30 minutes' - i.e. missing COD message.

They want stats on what is the average transaction time, what is the average transformation time, what is the average time for the business logic component, etc…

This middleware glue really keeps the finger pointing to a minimum.

On a different note, I learnt a lot about Oracle and hard-parsing. :)

 Regards,
Roger Lacroix
Capitalware Inc.
http://www.capitalware.biz


On Fri, 23 Mar 2007 08:31:20 -0400, Glen W Brumbaugh <[EMAIL PROTECTED]> wrote:

As a follow to my response, we have all wished for what, in messaging
terms, is called non-repudiation.  That is the ability to prove that a
message was sent and that it was received.  This would, occasionally, be
an awesome feature.  The only way to support this would be to log the
messages.  Wait!  We already do that when using linear logs.  An
enhancement (SWG guys from the lab - any comments?) or SupportPac that
processed log files for messages would save both developers and
administrators a lot of team as well as being a significant value add to
the product.


Regards,

Glen W. Brumbaugh



Glen W. Brumbaugh
Solutions Architect - WebSphere Messaging Based Solutions

IBM
Global Technology Services





To unsubscribe, write to [EMAIL PROTECTED] and,
in the message body (not the subject), write: SIGNOFF MQSERIES
Instructions for managing your mailing list subscription are provided in
the Listserv General Users Guide available at http://www.lsoft.com
Archive: http://listserv.meduniwien.ac.at/archives/mqser-l.html




To unsubscribe, write to [EMAIL PROTECTED] and,
in the message body (not the subject), write: SIGNOFF MQSERIES
Instructions for managing your mailing list subscription are provided in
the Listserv General Users Guide available at http://www.lsoft.com
Archive: http://listserv.meduniwien.ac.at/archives/mqser-l.html





_________________________________________________________________
Get Hotmail, News, Sport and Entertainment from MSN on your mobile. http://www.msn.txt4content.com/

To unsubscribe, write to [EMAIL PROTECTED] and,
in the message body (not the subject), write: SIGNOFF MQSERIES
Instructions for managing your mailing list subscription are provided in
the Listserv General Users Guide available at http://www.lsoft.com
Archive: http://listserv.meduniwien.ac.at/archives/mqser-l.html

Reply via email to