Is anyone using wM6.5 WebSphere MQ Adapter 6.5?

I should clarify, yes:

  1. They are two transactional connections to separate queues on the same queue manager.

The Adapter documentation is weird - on p20 it says for implicit transactions it can only deal with one local_transaction and to deal with more than one you need to control your own transactionality. In the section before the index it says explicit transaction contexts can have only one local_transaction. Read together, it would appear that multiple transactional puts are not possible.

Using non-transactional connections I get the results I expect, ie the messages get put independently of any transactional constructs in the flow.

Chris,

In page 193, it is clearly mentioned

If your flow contains adapter services that use more then one LOCAL_TRANSACTION connection, you must use explicit transactions

[SIZE=3][FONT=PalatinoLinotype-Roman]In this case, we have 2 put adapter services which places messages in 2 different queues, where we like to maintain transactionality. [SIZE=3]

Non transactional mq connection will work for us where you can use explicit statements begin/commit/rollback.

Senthil

[/SIZE][/FONT][/SIZE]

I very much appreciate your words, Senthil.

I swapped out the put1 and put2 services with non transactional versions of the same and the messages persist to the queue regardless of whether I rollback or commit. I even changed the commit to a rollback to make sure I would encounter a rollback without any branching with the same result.

One interesting thing which I also encountered is that when stepping through in the developer, transactional messages persist to the queue always.

I find the documentation of the product to be frustrating. It is written in a style that makes it quite easy to read and all the information is there, but somehow it is difficult to find with any precision exactly the information I need.

Chris,
Yes, If you step through the code, transactional messages will persist in the queue… It is known fact… You will have to run the service to check the transactionality…

Can you try this… Remove the begin/commit/rollback tran from your code… Create non transactional connection that points to 2 queues… In the try, you will have 2 put adapter services called (not a wrapper service which in turn calls adapter service)…

Service level commit/rollback should happen i believe. Check with some sample messages, where one put adapter returns success and one returns failure.

Regards,
Senthil