Question

Je ne parviens pas à envoyer un message via NServiceBus. J'ai une application Web ASP.Net MVC, développée sous Win7 x64, j'ai configuré mon Web.config comme

.
       <MsmqTransportConfig    InputQueue="worker"    ErrorQueue="error"    NumberOfWorkerThreads="1"    MaxRetries="5"   />

  <UnicastBusConfig>
    <MessageEndpointMappings>
      <add Messages="PricingInformation.Messages" Endpoint="worker2" />
    </MessageEndpointMappings>   </UnicastBusConfig>

Dans application_start, je câble les éléments suivants:

var bus = NServiceBus.Configure.WithWeb()
            .StructureMapBuilder()
            .XmlSerializer()
            .MsmqTransport()
                .IsTransactional(false)
                .PurgeOnStartup(false)
            .UnicastBus()
                .ImpersonateSender(false)
            .CreateBus()
            .Start();

Lorsque l'action qui m'intéresse se produit dans l'application que je lance

    public override void HandleEvent(SupplierPricingUpdatedEvent updatedEvent)
    {
        bus.Send(new ModelSupplierDetailsUpdatedMessage() {Id = updatedEvent.Id})
        return;
     }

ModelSupplierDetailsUpdatedMessage est une classe simple dans PricingInformation.Messages utilisant le marqueur d'interface IMessage et décoré avec l'attribut Serializable.

Les files d'attente MSMQ sont configurées et non transactionnelles, et tout le monde, y compris NETWORK SERVICE et IIS_IUSRS, a le contrôle total (dans les cas de résolution de problèmes désespérés)

log4net affiche les éléments suivants:

DEBUG NServiceBus.Utils.MsmqUtilities  14 - Checking if queue exists: worker.

DEBUG NServiceBus.Utils.MsmqUtilities 14 - Vérification de l'existence d'une file d'attente: erreur. DEBUG NServiceBus.Unicast.UnicastBus Worker.15 - Appel de 'HandleBeginMessage' sur NServiceBus.SagaPersisters.NHibernate.NHibernateMessageModule INFO NServiceBus.Unicast.UnicastBus Worker.15 - travailleur initialisé. DEBUG NServiceBus.Unicast.UnicastBus Worker.15 - Appel de 'HandleEndMessage' sur NServiceBus.SagaPersisters.NHibernate.NHibernateMessageModule DEBUG NServiceBus.Unicast.UnicastBus 9 - Message d’envoi 734e2fdd726d \ 8267 au worker2 de destination.

Pourtant, peu importe ce que j'essaie et ce que je peaufine (cela fait déjà trois heures), le message n'apparaît jamais dans la file d'attente. Je n'arrive pas à trouver une exception et j'ai la journalisation de niveau de débogage sur tout .. C'est probablement quelque chose d'aide simple

Était-ce utile?

La solution

Le problème est que si vous configurez manuellement vos files d'attente en mode non transactionnel, cela ne fonctionnera pas. Définition du NServiceBus " IsTransactional " propriété à false ne signifie pas que vous pouvez travailler avec des files d'attente non transactionnelles.

Essayez d’effacer les files d’attente et de les recréer en tant que transactions ou, si vous utilisez la version bêta de v2.0, de laisser NServiceBus les créer pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top