NServiceBus 无法接收消息 [英] NServiceBus unable to receive message

查看:46
本文介绍了NServiceBus 无法接收消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在遵循 NServiceBus 入门指南(第 5 版),但出现以下错误.

I'm following the NServiceBus getting started guide (version 5) and I get the below error.

当客户端向服务器发送命令时,服务器无法接收消息.代码没问题,因为另一台机器上的完全相同的代码正在运行.所以我的机器上缺少一些东西.

When the client sends a command to the server, the server has issues to receive the message. The code is okay, because the exact same code on another machine is working. So something is missing on my machine.

我确实运行了教程中提到的这个命令:

I did run this command as is mentioned in the tutorial:

DISM.exe/Online/NoRestart/English/Enable-Feature/all/FeatureName:MSMQ-Server

DISM.exe /Online /NoRestart /English /Enable-Feature /all /FeatureName:MSMQ-Server

但是还是不行.

2016-11-01 19:50:47.316 错误ServiceBus.Transports.Msmq.MsmqDequeueStrategy 接收消息时出错.System.Transactions.TransactionAbortedException:事务已中止.---> System.Transactions.TransactionManagerCommunicationException: 与底层事务管理器的通信失败.---> System.Runtime.InteropServices.COMException:事务管理器不可用.(来自 HRESULT 的异常:0x8004D01B)在 System.Transactions.Oletx.IDtcProxyShimFactory.ConnectToProxy(String nodeName, Guid resourceManagerIdentifier, IntPtr managedIdentifier, Boolean& nodeName Matches, UInt32& whereaboutsSize, CoTaskMemHandle& whereaboutsBuffer, IResourceManagerShim& resourceManagerShim)在 System.Transactions.Oletx.DtcTransactionManager.Initialize()--- 内部异常堆栈跟踪结束 ---在 system.Transactions.Oletx.OletxTransactionManager.ProxyException(COMExcept离子 comException)在 System.Transactions.Oletx.DtcTransactionManager.Initialize()在 System.Transactions.Oletx.DtcTransactionManager.get_ProxyShimFactory()在 System.Transactions.Oletx.OletxTransactionManager.CreateTransaction(Transa操作选项属性)在 System.Transactions.TransactionStatePromoted.EnterState(InternalTransaction tx)--- 内部异常堆栈跟踪结束 ---在 System.Transactions.TransactionStateAborted.CheckForFinishedTransaction(In内部交易 tx)在 System.Transactions.EnlistableStates.Promote(InternalTransaction tx)在 System.Transactions.Transaction.Promote()在 System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transacti交易时)在 System.Transactions.TransactionInterop.GetDtcTransaction(Transaction trans行动)在 System.Messaging.MessageQueue.StaleSafeReceiveMessage(UInt32 超时,Int32 动作,MQPROPS 属性,NativeOverlapped* 重叠,ReceiveCallback 接收iveCallback、CursorHandle cursorHandle、IntPtr 事务)在 System.Messaging.MessageQueue.ReceiveCurrent(TimeSpan timeout, Int32 actionn、CursorHandle 游标、MessagePropertyFilter 过滤器、MessageQueueTransaction 中ternalTransaction, MessageQueueTransactionType transactionType)在 System.Messaging.MessageQueue.Receive(TimeSpan timeout, MessageQueueTransa动作类型交易类型)在 C:\Bu 中的 NServiceBus.Transports.Msmq.MsmqDequeueStrategy.b__12_1()ildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Transports\Msmq\MsmqDequeueS策略.cs:第 248 行在 NServiceBus.Transports.Msmq.MsmqDequeueStrategy.TryReceiveMessage(Func`1 r接收,消息&消息)在 C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Transports\Msmq\MsmqDequeueStrategy.cs:line 332

2016-11-01 19:50:47.316 ERROR ServiceBus.Transports.Msmq.MsmqDequeueStrategy Error in receiving messages. System.Transactions.TransactionAbortedException: The transaction has aborted. ---> System.Transactions.TransactionManagerCommunicationException: Communication with the underlying transaction manager has failed. ---> System.Runtime.InteropServices.COMException: The Transaction Manager is not available. (Exception from HRESULT: 0x8004D01B) at System.Transactions.Oletx.IDtcProxyShimFactory.ConnectToProxy(String nodeName, Guid resourceManagerIdentifier, IntPtr managedIdentifier, Boolean& nodeName Matches, UInt32& whereaboutsSize, CoTaskMemHandle& whereaboutsBuffer, IResourceManagerShim& resourceManagerShim) at System.Transactions.Oletx.DtcTransactionManager.Initialize() --- End of inner exception stack trace --- at system.Transactions.Oletx.OletxTransactionManager.ProxyException(COMExcept ion comException) at System.Transactions.Oletx.DtcTransactionManager.Initialize() at System.Transactions.Oletx.DtcTransactionManager.get_ProxyShimFactory() at System.Transactions.Oletx.OletxTransactionManager.CreateTransaction(Transa ctionOptions properties) at System.Transactions.TransactionStatePromoted.EnterState(InternalTransactio n tx) --- End of inner exception stack trace --- at System.Transactions.TransactionStateAborted.CheckForFinishedTransaction(In ternalTransaction tx) at System.Transactions.EnlistableStates.Promote(InternalTransaction tx) at System.Transactions.Transaction.Promote() at System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transacti on transaction) at System.Transactions.TransactionInterop.GetDtcTransaction(Transaction trans action) at System.Messaging.MessageQueue.StaleSafeReceiveMessage(UInt32 timeout, Int3 2 action, MQPROPS properties, NativeOverlapped* overlapped, ReceiveCallback rece iveCallback, CursorHandle cursorHandle, IntPtr transaction) at System.Messaging.MessageQueue.ReceiveCurrent(TimeSpan timeout, Int32 actio n, CursorHandle cursor, MessagePropertyFilter filter, MessageQueueTransaction in ternalTransaction, MessageQueueTransactionType transactionType) at System.Messaging.MessageQueue.Receive(TimeSpan timeout, MessageQueueTransa ctionType transactionType) at NServiceBus.Transports.Msmq.MsmqDequeueStrategy.b__12_1() in C:\Bu ildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Transports\Msmq\MsmqDequeueS trategy.cs:line 248 at NServiceBus.Transports.Msmq.MsmqDequeueStrategy.TryReceiveMessage(Func`1 r eceive, Message& message) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus .Core\Transports\Msmq\MsmqDequeueStrategy.cs:line 332

推荐答案

对我来说,问题是 Distributed Transaction Coordinator 服务已关闭.开启后一切正常.

For me the issue was that the service Distributed Transaction Coordinator was turned off. After turning it on everything works as expected.

这篇关于NServiceBus 无法接收消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆