Pergunta

Eu tenho problemas para enviar uma mensagem via NServiceBus. Eu tenho um aplicativo web ASP.Net MVC, desenvolvimento em Win7 x64, eu configurei meu web.config como

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

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

No Application_Start I wire-se o seguinte:

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

Quando a ação Estou interessado acontece no fogo aplicativo I

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

ModelSupplierDetailsUpdatedMessage é simples classe em PricingInformation.Messages usando interface de marcador IMessage e decorado com o atributo Serializable.

As filas MSMQ são configurados, não transacional, e todos, incluindo SERVIÇO DE REDE e IIS_IUSRS tem controle total (em medidas deseperate solução de problemas)

log4net mostra o seguinte:

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

DEBUG NServiceBus.Utils.MsmqUtilities 14 - Verificar se a fila existe: erro. DEBUG NServiceBus.Unicast.UnicastBus Worker.15 - Calling 'HandleBeginMessage' on NServiceBus.SagaPersisters.NHibernate.NHibernateMessageModule INFO NServiceBus.Unicast.UnicastBus Worker.15 - trabalhador inicializado. DEBUG NServiceBus.Unicast.UnicastBus Worker.15 - Calling 'HandleEndMessage' on NServiceBus.SagaPersisters.NHibernate.NHibernateMessageModule DEBUG NServiceBus.Unicast.UnicastBus 9 - Enviar mensagem PricingInformation.Messages.ModelSupplierDetailsUpdatedMessage, PricingInformation.Messages, versão = 1.0.0.0, Culture = neutral, PublicKeyToken = null com ID 2c642672-1bf1-48d4-a90f- 734e2fdd726d \ 8267 para worker2 destino.

No entanto, não importa o que eu tente, eo que eu ajustar (foram três horas para ele já) a mensagem nunca aparece na fila. Eu não consigo encontrar uma exceção e eu tenho registro de nível de depuração em tudo .. É provavelmente algo simples help

Foi útil?

Solução

O problema é que se você configurar manualmente suas filas como não-transacional, então ele não vai funcionar. Definir a propriedade NServiceBus "IsTransactional" para false não significa que você pode trabalhar com filas não-transacionais.

Por favor, tente excluir as filas e recriando-os como transacional, ou, se você estiver usando a versão beta do v2.0, apenas deixando NServiceBus criar as filas para você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top