Pregunta

Tengo problemas para enviar un mensaje a través de NServiceBus. Tengo una aplicación web ASP.Net MVC, en desarrollo en Win7 x64, he configurado mi web.config como

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

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

En application_start, conecto lo siguiente:

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

Cuando la acción en la que estoy interesado sucede en la aplicación que disparo

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

ModelSupplierDetailsUpdatedMessage es una clase simple en PricingInformation.Messages usando el marcador de interfaz IMessage y decorado con el atributo Serializable.

Las colas de MSMQ son de configuración, no transaccionales, y todos, incluidos NETWORK SERVICE e IIS_IUSRS, tienen control total (en medidas de resolución de problemas)

log4net muestra lo siguiente:

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

DEBUG NServiceBus.Utils.MsmqUtilities 14 - Comprobando si existe una cola: error. DEBUG NServiceBus.Unicast.UnicastBus Worker.15 - Llamando 'HandleBeginMessage' en NServiceBus.SagaPersisters.NHibernate.NHibernateMessageModule INFO NServiceBus.Unicast.UnicastBus Worker.15: trabajador inicializado. DEBUG NServiceBus.Unicast.UnicastBus Worker.15 - Llamando 'HandleEndMessage' en NServiceBus.SagaPersisters.NHibernate.NHibernateMessageModule DEBUG NServiceBus.Unicast.UnicastBus 9 - Enviando mensaje PricingInformation.Messages.ModelSupplierDetailsUpdatedMessage, PricingInformation.Messages, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null with ID 2c6472pcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcppcpcpcpcpcpccpcpcpccccpcpcpcnpcnpcnpcnpcnpcnpcnpcnpcnpcnpcnpcnpcnpcnpcnpcnp 734e2fdd726d \ 8267 al trabajador de destino2.

Sin embargo, no importa lo que intente y lo que modifique (ya han pasado tres horas) el mensaje nunca aparece en la cola. No puedo encontrar una excepción y tengo un registro de nivel de depuración en todo ... Probablemente sea algo simple ayuda

¿Fue útil?

Solución

El problema es que si configura manualmente sus colas como no transaccional, entonces no funcionará. Configuración del NServiceBus " IsTransactional " la propiedad a falso no significa que pueda trabajar con colas no transaccionales.

Intente eliminar las colas y volver a crearlas como transaccionales o, si está utilizando la versión beta de v2.0, simplemente deje que NServiceBus cree las colas por usted.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top