Adabas - MQ commit

Hello,

I have an application in the processing of which it stores into an Adabas File and then writes a message to an MQ for further processing. I came to know that Adabas commit ( end transaction) and MQ Commit are mutually exclusive. Similarly a back out transaction on adabas does not necessarily mean a back out of the message written to the queue.

I would like to know why this is the case, if it is true. Why is it not possible to control the commit and roll-back of a message in sync with the commit and roll-back of the adabas database.

The scenario that has caused me a problem is when:

A record is stored on an adabas file A.
The record is then formatted and written to a MQ Queue.
The same record is tried to be updated after written to the queue, but gets an error and the database is rolled back. Even then, the MQ message is committed and is visible to the other application reading from the queue.

Please clarify.

Regards
Vallish

ADABAS Transaction Manager, an add-on to ADABAS, implements a 2-phase commit and links to RRMS and CICS Syncpoint Manager, you should be able to coordinate your commits to ADABAS and MQ this way.

But, MQ is a message queueing system, an asynchronous process, where are you sending the “formatted records” to ?

Anyway, the scenario you describe is error-prone:

Are you committing the store here ? You should do so.

When you commit to MQ here, you should be in sync, given the queue reaches its target.

Even when the updated record gets commited at that point, are you sending an update via MQ as well ? If not, you are out of sync anyway.

Hi -

No, the record is not being committed after the first store.
The intention is to commit it only if message is successfully sent.

No message is sent after updating the same record again.

The issue I am trying to address is, when because of some reason, the record that I am trying to update gets a database error, for ex - contention, and I have to back out.

In such a scenario, if I do a commit on the store done previously, there is however an option for me to do a delete of the record. But, how will I be able to roll back the message that has been already written to the MQ queue and has been committed.

COBOL/DB2/MQ combination allows to hold the message as uncommited until the database changes are commited. Does -

the Adabas Transaction Manager provide a similar facility?

When using ATM’s interface to RRMS - yes.

What is RRMS? Can you please provide more information on it?

Please find more information about ATM and its RRMS-Interface in

http://developer.softwareag.com/ets/docu/adabas/atm751mf/print.htm

More information on RRMS (Recovery Resource Managememt Services) can be found at

http://publibz.boulder.ibm.com/epubs/pdf/iea2n150.pdf