Как сделать транзакционную загрузку из Websphere MQ в .NET? - PullRequest
3 голосов
/ 21 июня 2010

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

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

1 Ответ

5 голосов
/ 21 июня 2010

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

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

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

...