代码之家  ›  专栏  ›  技术社区  ›  BlackICE

有人在Microsoft群集服务器上安装了NServiceBus吗?

  •  1
  • BlackICE  · 技术社区  · 16 年前

    更新: 好的,在过去我没有将msdtc设置为集群资源(doh!),我可以运行我的程序,一切看起来都很好,但我无法成功地向它发送消息。挖掘之后,我发现虽然私有队列是在集群的一个节点上创建的,但它们不在另一个节点上(我在命令提示符下运行nservicebus.host.exe),因此对使用集群名称的应用程序不可见。我试着从nservicebus.host.exe创建一个通用应用程序并将其添加到集群组中,但这只会使集群组下降。我的问题仍然是:是否有人在集群环境中成功运行了nservicebus?


    我正在尝试将nservicebus安装到群集win2k3主机上。提供的配置实用程序(runner.exe)抛出了一些我没有捕获到的错误,现在运行正常。运行nservicebus.host.exe时,我会重复出现此错误:

    System.Transactions.TransactionBortedException:事务已中止。--->system.transactions.transactionmanagercommunicationexception:与基础事务管理器的通信失败。--->system.runtime.interopservices.comexception(0x8004d01b):事务管理器不可用。(hresult的异常:0x8004d01b) 在system.transactions.oletx.idtcproxysimfactory.connecttoproxy(字符串节点名、guid resourcemanageridentifier、intptr managedidentifier、boolean&nodenamematches、uint32&whereboutsssize、cotaskmemhandle&whereboutsbuffer、iresourcemanagershim&resourcemanagershim) 位于system.transactions.oletx.dtcTransactionManager.initialize() ---内部异常堆栈跟踪结束--- 在system.transactions.oletx.oletxtransactionmanager.proxyException(ComException ComException) 位于system.transactions.oletx.dtcTransactionManager.initialize() 在system.transactions.oletx.dtcTransactionManager.get_proxysimfactory() 在system.transactions.oletx.oletxtransactionmanager.createtransaction(transactionoptions属性) 在System.Transactions.TransactionStatePromoted.EnterState(内部事务发送) ---内部异常堆栈跟踪结束--- 在System.Transactions.TransactionStateAborted.CheckForFinishedTransaction(内部事务发送) 在System.Transactions.EnlistableStates.Promote(内部事务发送) 在system.transactions.transaction.promote() 在system.transactions.transactioninterop.convertTooletXtransaction(事务事务) 在system.transactions.transactioninterop.getdtcTransaction(事务处理) 在System.Messaging.MessageQueue.StaleSafeReceiveMessage上(uint32超时、Int32操作、MQProps属性、NativeOverlapped*重叠、ReceiveCallback ReceiveCallback、游标句柄游标句柄、IntPtr事务) 位于System.Messaging.MessageQueue.ReceiveCurrent(TimeSpan超时、Int32操作、游标句柄游标、MessagePropertyFilter筛选器、MessageQueueTransaction InternalTransaction、MessageQueueTransactionType TransactionType) 在System.Messaging.MessageQueue.Receive(TimeSpan超时,MessageQueueTransactionType TransactionType) 在d:\buildagent-02\work\672d81652eaca4e1\src\impl\unicast\nservicebus.unicast.transport.msmq.msmqtransport.receiveMessageFromQueueAfterPeekwasSuccessful()中的nserviceBus.unicast.transport.msmq.msmqtransport.cs:行551

    有没有人成功地将nservicebus放到集群服务器上,如果有,您是如何让它工作的?

    3 回复  |  直到 14 年前
        1
  •  3
  •   BlackICE    16 年前

    好的,所以我终于把它建立起来,并作为一个通用应用程序工作。我发现的问题是:

    1. 您需要添加.NET框架 功能或应用程序服务器角色 到成员服务器
    2. 您需要同时添加msdtc和msmq资源 到群集(MSMQ将需要 你有MSDTC)
    3. 在为 nservicebus.host.exe,您将需要 进入并修改属性 要检查的通用应用程序的 “对计算机使用网络名称” “命名”框以便nservicebus指向 使用msmq的群集名 不到 目前正在运行。
        2
  •  3
  •   David Boike    15 年前

    对于那些寻找更多指南的人,我写了一篇博客文章,一步一步详细介绍了这个过程。

    退房 Deploying NServiceBus in a Windows Failover Cluster .

    我正在使用WindowsServer2008,但我相信大多数相同的规则都应该适用。

        3
  •  1
  •   BlackICE    16 年前

    好的,实际上在集群上设置msdtc资源是有帮助的,一旦同时拥有msmq资源和msdtc资源,那么一切都可以工作,几乎可以,请参阅问题的更新。

    推荐文章