簡體   English   中英

MSMQ分布式事務(DTC)無法導入事務

[英]MSMQ Distributed Transaction (DTC) cannot import transaction

我需要在一次交易中接收,處理和發送消息。 由於MSMQ不支持事務性遠程接收,因此我使用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();
}
  • 隊列是事務性的。
  • 在服務器mqtest上啟用了DTC,並將其配置為允許入站和出站。
  • 防火牆設置為允許所有MSMQ和DTC請求。

我收到以下錯誤消息: 無法導入事務 有人可以幫忙嗎? 另外,我的客戶端計算機如何知道它應該使用服務器上的DTC進行交易? 從到目前為止我發現的樣本中看不出來...

顯然,必須安裝DTC並將其配置為允許客戶端和服務器上的網絡訪問。 這樣,此代碼片段就可以正常工作:

string queueName = "trxwrite";
string queue2Name = "trxread";
string serverName = "mqtest";
Parallel.For(0, 300, (int i) =>
                        {
                            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(DateTime) });

                                Message message = mq.Receive(MessageQueueTransactionType.Automatic);
                                DateTime createDt = (DateTime)message.Body;

                                MessageQueue mq2 = new MessageQueue(string.Format(@"FormatName:DIRECT=OS:{0}\{1}", serverName, queue2Name));
                                mq2.Formatter = new XmlMessageFormatter(new[] { typeof(DateTime) });

                                Message messageToSend = new Message(createDt);
                                mq2.Send(messageToSend, MessageQueueTransactionType.Automatic);

                                ts.Complete();
                            }
                        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM