Как получить транзакцию из Websphere MQ в .NET?

Я пишу клиент, который получает сообщения из внешней очереди Websphere MQ и помещает их во внутреннюю очередь MSMQ. Клиент будет использовать MQ Client или, что предпочтительнее, будет полностью управляемым (MQC.TRANSPORT_MQSERIES_MANAGED).

На основе example от IBM, у меня есть работающая версия, которая может выполнять простой IBM.WMQ.MQQueue.Get(…). Как эта операция может быть выполнена внутри транзакции? Я думаю об использовании транзакций, отличных от XA.


person runerei    schedule 21.06.2010    source источник


Ответы (1)


Однофазная фиксация WMQ включается с помощью флага MQC.MQPMO_SYNCPOINT при размещении сообщений или флага MQC.MQGMO_SYNCPOINT при получении сообщений. Чтобы завершить единицу работы, вызовите метод Commit или Backout объекта администратора очередей.

Ссылка: методы Backout и Commit в MQQueueManager в руководстве.

Пока вы используете управляемый код, вы ограничены однофазной фиксацией. Если вы используете неуправляемый код в режиме привязки (используя общую память для общения с локальным WMQ QMgr), вы можете использовать XA. В этом случае вам нужно будет использовать метод Begin.

person T.Rob    schedule 21.06.2010