如何在 .NET 中从 Websphere MQ 进行事务获取?
我正在编写一个客户端,它从外部 Websphere MQ 队列接收消息并将它们放入内部 MSMQ 队列中。客户端将使用 MQ 客户端,或者最好是纯托管 (MQC.TRANSPORT_MQSERIES_MANAGED)。
基于 来自 IBM 的示例,我有一个版本已启动并正在运行,可以执行简单的 IBM.WMQ.MQQueue.Get(...)。如何在事务中完成此操作?我正在考虑使用非 XA 事务。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
通过在放置消息时使用 MQC.MQPMO_SYNCPOINT 标志或在获取消息时使用 MQC.MQGMO_SYNCPOINT 标志来启用 WMQ 单阶段提交。要完成工作单元,请调用队列管理器对象的 Commit 或 Backout 方法。
参考:MQQueueManager 部分。
只要您使用托管代码,您就只能进行一阶段提交。如果在绑定模式下使用非托管代码(使用共享内存与本地 WMQ QMgr 通信),您可以使用 XA。在这种情况下,您需要使用 Begin 方法。
The WMQ Single-Phase Commit is enabled by using the MQC.MQPMO_SYNCPOINT flag when putting messages or the MQC.MQGMO_SYNCPOINT flag when getting messages. To complete the unit of work, call the queue manager object's Commit or Backout method.
Reference: the Backout and Commit methods in the MQQueueManager section in the manual.
As long as you are using managed code you are limited to 1-phase commit. If using unmanaged code in bindings mode (using shared memory to talk to a local WMQ QMgr) you can use XA. In that case you'd need to use the Begin method.