如何从.NET中的Websphere MQ进行事务性获取?

run*_*rei 3 .net msmq transactions ibm-mq

我正在编写一个客户端,它从外部Websphere MQ队列接收消息并将它们放在内部MSMQ队列上.客户端将使用MQ客户端,或者最好是纯粹管理(MQC.TRANSPORT_MQSERIES_MANAGED).

基于IBM的一个例子,我有一个版本可以运行,可以做一个简单的IBM.WMQ.MQQueue.Get(...).如何在交易中完成此操作?我正在考虑使用非XA事务.

T.R*_*Rob 5

在获取消息时使用MQC.MQPMO_SYNCPOINT标志或在获取消息时使用MQC.MQGMO_SYNCPOINT标志来启用WMQ单阶段提交.要完成工作单元,请调用队列管理器对象的Commit或Backout方法.

参考:手册中MQQueueManager部分中的Backout和Commit方法.

只要您使用托管代码,就可以限制为单阶段提交.如果在绑定模式下使用非托管代码(使用共享内存与本地WMQ QMgr通信),则可以使用XA.在这种情况下,您需要使用Begin方法.