1 つのトランザクションでメッセージを受信、処理、送信する必要があります。MSMQ は Transactional Remote Receive をサポートしていないため、DTC を使用します。現在、メッセージも受信できません。そのために使用するコードは次のとおりです。
string queueName = "trxwrite";
string serverName = "mqtest";
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.RequiresNew))
{
MessageQueue mq = new MessageQueue(string.Format(@"FormatName:DIRECT=OS:{0}\{1}", serverName, queueName));
mq.Formatter = new XmlMessageFormatter(new[] {typeof (string)});
Message message = mq.Receive(MessageQueueTransactionType.Automatic);
ts.Complete();
}
- キューはトランザクションです。
- サーバーで DTC が有効になっており、
mqtest
インバウンドとアウトバウンドを許可するように構成されています。 - ファイアウォールは、すべての MSMQ および DTC 要求を許可するように設定されています。
次のエラーメッセージが表示されます:トランザクションをインポートできません。誰でも助けることができますか?また、クライアント マシンは、トランザクションにサーバー上の DTC を使用する必要があることをどのように認識しますか? これまでに見つけたサンプルからはわかりません...