2010-03-18 61 views
1

更新: 好吧,經過了我沒有將MSDTC設置爲羣集資源(doh!)的事實後,我能夠運行我的程序,並且都顯示正常,但是我無法成功發送消息到它。挖掘之後,我發現雖然專用隊列是在羣集的一個節點上創建的,但它們不在另一個節點上(我從命令提示符運行NServiceBus.Host.exe),因此對於使用羣集的應用程序不可見名稱。我嘗試從NServiceBus.Host.exe中創建一個通用應用程序並將其添加到羣集組,但這只是將羣集組關閉。我的問題仍然是:是否有人在集羣環境中成功運行NServiceBus?是否有人將NServiceBus安裝到Microsoft羣集服務器上?


我想安裝到羣集win2k3主機NServiceBus。提供的配置實用程序(runner.exe)會拋出一些我沒有發現的錯誤,現在它可以正常運行。當我運行NServiceBus.Host.exe我得到這個錯誤反覆:

System.Transactions.TransactionAbortedException:事務已中止。 ---> System.Transactions.TransactionManagerCommunicationException:與底層事務管理器的通信失敗。 ---> System.Runtime.InteropServices.COMException(0x8004D01B):事務管理器不可用。在System.Transactions.Oletx.IDtcProxyShimFactory.ConnectToProxy(字符串節點名稱,的Guid resourceManagerIdentifier,IntPtr的managedIdentifier,布爾& nodeNameMatches,UInt32的& whereaboutsSize,CoTaskMemHandle & whereaboutsBuffer,IResourceManagerShim & resourceManagerShim) 在System.Transactions的 :(0x8004D01B從HRESULT異常)。 Oletx.DtcTransactionManager.Initialize() ---在System.Transactions.Oletx.OletxTransactionManager.ProxyException(收到COMException收到COMException) 內部異常堆棧跟蹤--- 結束在System.Transactions.Oletx.DtcTransactionManager.Initialize() 在System.Transactions.Oletx.DtcTransactionManager.get_ProxyShimFactory() at System.Transactions.Oletx.OletxTransactionManager.CreateTransaction(TransactionOptions屬性) at System.Transactions.TransactionStatePromoted.EnterState(InternalTransaction tx) ---內部異常堆棧跟蹤結束--- at System.Transactions.TransactionStateAborted.CheckForFinishedTransaction (InternalTransaction TX) 在System.Transactions.EnlistableStates.Promote(InternalTransaction TX) 在System.Transactions.Transaction.Promote() 在System.Transactions.TransactionInterop.ConvertToOletxTransaction(事務的事務) 在System.Transactions.TransactionInterop.GetDtcTransaction (Transaction transaction) at System.Messaging.MessageQueue.StaleSafeReceiveMessage(UInt32 timeout,Int32 action,MQPROPS properties,N ativeOverlapped *重疊,ReceiveCallback receiveCallback,CursorHandle cursorHandle,IntPtr的交易) 在System.Messaging.MessageQueue.ReceiveCurrent(時間跨度超時,的Int32動作,CursorHandle光標,MessagePropertyFilter濾波器,MessageQueueTransaction internalTransaction,MessageQueueTransactionType TRANSACTIONTYPE) 在System.Messaging.MessageQueue.Receive (TimeSpan超時,MessageQueueTransactionType事務類型) at d:\ BuildAgent-02 \ work \中的NServiceBus.Unicast.Transport.Msmq.MsmqTransport.ReceiveMessageFromQueueAfterPeekWasSuccessful()\ 672d81652eaca4e1 \ src \ impl \ unicast \ NServiceBus.Unicast.Msmq \ MsmqTransport.cs: 551行

有沒有人成功地將NServiceBus放到集羣服務器上,如果是的話,如何你有沒有得到它的工作?

回答

3

好的,所以我終於把它作爲一個通用應用程序來工作。我發現的陷阱是:

  1. 您需要在.NET Framework 功能或應用程序服務器角色 添加到成員服務器
  2. 您需要同時添加MSDTC和MSMQ資源 到羣集( MSMQ需要 你有MSDTC)
  3. 增加對 NServiceBus.Host.exe通用應用程序後,您將需要 去和修改屬性的通用應用程序的 檢查 「使用網絡名稱對於計算機 名稱「框,以便NServiceBus將 指向集羣名稱,以便使用MSMQ 而不是當前正在運行它的成員服務器 。
1

好吧,它有助於在羣集上設置MSDTC資源,一旦你擁有MSMQ資源和MSMQ資源,那麼一切正常,幾乎可以看到問題的更新。

+0

我發現的另一個問題是,在爲羣集組設置通用應用程序之後,您需要進入並更改屬性以檢查「使用網絡名稱作爲計算機名稱」,否則NServiceBus將嘗試運行在本地使用其中一個節點的名稱。 – BlackICE 2010-03-23 18:52:18

相關問題