.NET MQ拡張トランザクションクライアントを使用して、エンタープライズ内の既存のキューマネージャと通信しようとしています。私は、MQ 7.0.1試用版からExtended Clientを使用してWindows 2008 R2をクリーンインストールしています。例外MQエクステンドトランザクションクライアントでキューに書き込む
私のプログラムは、TransactionScopeとMQC.MQPMO_SYNCPOINTオプションをコメントアウトするときにキューに書き込みます。このプログラムはtrans.Completeを持っていないことを
using System;
using System.Collections.Generic;
using System.Text;
using IBM.WMQ;
using System.Transactions;
namespace MQSeries
{
class Program
{
static void Main(string[] args)
{
var transOptions = new TransactionOptions();
transOptions.IsolationLevel = IsolationLevel.Serializable;
string queueManagerName = "MYQUEUEMANAGER";
string queueName = "MYQUEUE";
string channelName = "MYCHANNEL";
string channelInfo = "myserver.com(1418)";
MQQueueManager qm;
using (var trans = new TransactionScope(TransactionScopeOption.Required, transOptions, EnterpriseServicesInteropOption.Full))
{
qm = new MQQueueManager(queueManagerName, channelName, channelInfo);
// Set up the options on the queue we wish to open
int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT;
var q = qm.AccessQueue(queueName, openOptions);
// Define a WebSphere MQ message, writing some text in UTF format
MQMessage hello_world = new MQMessage();
hello_world.WriteUTF("Hello World!");
// Specify the message options
MQPutMessageOptions pmo = new MQPutMessageOptions(); // accept the defaults,
pmo.Options = MQC.MQPMO_SYNCPOINT;
// Put the message on the queue
q.Put(hello_world, pmo);
}
qm.Disconnect();
}
}
}
注意(:
ここMQRC_UOW_ENLISTMENT_ERROR ReasonCode 2354
は私の完全なプログラムです:トランザクションコードで、私はq.Put()の呼び出しで、次の例外を取得します)コール。だから、現在の例外を除いて、私は、トランザクションでロールバックされるキュー上のメッセージを期待します。