Domanda

Aggiornamento: Ok, dopo aver passato il fatto che non ho avuto MSDTC impostato come risorsa cluster (doh!), Sono stato in grado di eseguire il mio programma e tutti sembravano bene, ma non ero in grado di inviare messaggi con successo ad esso. Dopo aver scavato Ho trovato che mentre le code private sono stati creati su un nodo del cluster, non erano sull'altro nodo (correvo NServiceBus.Host.exe da un richiamo di ordine), e quindi non erano visibili alle applicazioni utilizzando cluster nome. Ho cercato di creare un'applicazione generica di NServiceBus.Host.exe e aggiungendolo al gruppo di cluster, ma che appena portato il gruppo di cluster verso il basso. La mia domanda è ancora:? Qualcuno ha eseguito con successo NServiceBus in un ambiente cluster


Sto cercando di installare NServiceBus su un ospite win2k3 cluster. L'utilità di configurazione fornita (runner.exe) gettare alcuni errori che non mi cattura, e ora viene eseguito correttamente. Quando si esegue NServiceBus.Host.exe io sono questo errore più volte:

  

System.Transactions.TransactionAbortedException: La transazione è stata interrotta. ---> System.Transactions.TransactionManagerCommunicationException: La comunicazione con il gestore delle transazioni sottostante non è riuscita. ---> System.Runtime.InteropServices.COMException (0x8004D01B): Gestore transazioni non è disponibile. (Eccezione da HRESULT: 0x8004D01B)      a System.Transactions.Oletx.IDtcProxyShimFactory.ConnectToProxy (String nodeName, Guid resourceManagerIdentifier, IntPtr managedIdentifier, booleano e nodeNameMatches, UInt32 & whereaboutsSize, CoTaskMemHandle & whereaboutsBuffer, IResourceManagerShim & resourceManagerShim)      a System.Transactions.Oletx.DtcTransactionManager.Initialize ()      --- Fine di stack eccezione interna ---      a System.Transactions.Oletx.OletxTransactionManager.ProxyException (COMException COMException)      a System.Transactions.Oletx.DtcTransactionManager.Initialize ()      a System.Transactions.Oletx.DtcTransactionManager.get_ProxyShimFactory ()      a System.Transactions.Oletx.OletxTransactionManager.CreateTransaction (TransactionOptions proprietà)      a System.Transactions.TransactionStatePromoted.EnterState (InternalTransaction tx)      --- Fine di stack eccezione interna ---      a System.Transactions.TransactionStateAborted.CheckForFinishedTransaction (InternalTransaction tx)      a System.Transactions.EnlistableStates.Promote (InternalTransaction tx)      a System.Transactions.Transaction.Promote ()      a System.Transactions.TransactionInterop.ConvertToOletxTransaction (transaction Transazione)      a System.Transactions.TransactionInterop.GetDtcTransaction (transaction Transazione)      a System.Messaging.MessageQueue.StaleSafeReceiveMessage (UInt32 timeout, l'azione Int32, MQPROPS proprietà, NativeOverlapped * sovrapposti, ReceiveCallback receiveCallback, CursorHandle cursorHandle, IntPtr transazione)      a System.Messaging.MessageQueue.ReceiveCurrent (TimeSpan timeout, azione Int32, cursore CursorHandle, filtro MessagePropertyFilter, MessageQueueTransaction internalTransaction, MessageQueueTransactionType TransactionType)      a System.Messaging.MessageQueue.Receive (TimeSpan timeout, MessageQueueTransactionType TransactionType)      a NServiceBus.Unicast.Transport.Msmq.MsmqTransport.ReceiveMessageFromQueueAfterPeekWasSuccessful () in D: \ BuildAgent-02 \ lavoro \ 672d81652eaca4e1 \ src \ impl \ unicast \ NServiceBus.Unicast.Msmq \ MsmqTransport.cs: linea 551

Qualcuno ha messo con successo NServiceBus su un server cluster, in caso affermativo, come hai fatto a farlo funzionare?

È stato utile?

Soluzione

Ok, così ho finalmente capito e lavorare come applicazione generica. I trucchi che ho trovato sono stati:

  1. È necessario aggiungere il NET Framework caratteristica o application server ruolo ai server membri
  2. È necessario aggiungere sia un MSDTC e una risorsa MSMQ al cluster (MSMQ richiederà che si dispone di MSDTC)
  3. Dopo aver aggiunto l'applicazione generica per NServiceBus.Host.exe, dovrai di entrare e modificare le proprietà dell'applicazione generica per controllare "Usa nome di rete per il calcolatore Nome" scatola in modo che i punti NServiceBus per il nome del cluster per l'utilizzo di MSMQ non al server membro che è attualmente in esecuzione di esso.

Altri suggerimenti

Per chi cerca più di una guida, ho scritto un post sul blog che descrive questo processo passo dopo passo.

Distribuzione NServiceBus in un cluster di failover di Windows .

Sto utilizzando Windows Server 2008, ma credo che la maggior parte delle stesse regole dovrebbero applicarsi.

Ok, Aiuta ad avere in realtà una risorsa MSDTC impostato sul cluster, una volta che avete entrambi che e MSMQ risorsa allora tutto funziona, quasi, vedi aggiornamento alla domanda.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top