Estoy usando NServiceBus 2.6.0.1504 en Windows Server 2003 de 32 bits.

El archivo de registro generado indica que todo se está conectando, pero por alguna razón, "CreateBus ()" devuelve nulo. Ignore mi código de depuración :)

        SetLoggingLibrary.Log4Net(log4net.Config.XmlConfigurator.Configure);

        var one = Configure.With(typeFinder.GetAssemblies());
        var two = one.DefaultBuilder();
        var three = two.MsmqSubscriptionStorage();
        var four = three.XmlSerializer();
        var five = four.MsmqTransport();
        var six = five.IsTransactional(false);
        var seven = six.PurgeOnStartup(true);
        var eight = seven.UnicastBus();
        var nine = eight.LoadMessageHandlers();
        var ten = nine.ImpersonateSender(false);
        var eleven = ten.CreateBus();
        if (eleven == null)
            throw new Exception("createbus");
        var twelve = eleven.Start();

Siempre se lanza la excepción con el mensaje "createbus".

Esto funciona en mi caja de desarrollo con Windows Server 2008 R2 de 64 bits.

Aquí está mi configuración para la aplicación web.

  <MsmqSubscriptionStorageConfig Queue="MedXChangeSubcriptions" />
  <MsmqTransportConfig InputQueue="MedXChangeForms" ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5" />
  <UnicastBusConfig>
    <MessageEndpointMappings>
      <add Messages="MethodFactory.MedXChange.Library" Endpoint="MedXChangeWeb" />
    </MessageEndpointMappings>
  </UnicastBusConfig>

¿Algunas ideas? Cualquier ayuda será muy apreciada.

4
Paul Knopf 31 ene. 2012 a las 06:43
¿Puede agregar la excepción completa? ¿Está ejecutando la versión .NET 3.5 o .NET 4.0?
 – 
Adam Fyles
31 ene. 2012 a las 18:20
No se plantea ninguna excepción. Solo devuelve nulo. .NET 4.0
 – 
Paul Knopf
2 feb. 2012 a las 18:25
¿Qué tipos encuentra su typeFinder? ¿Incluye todos los conjuntos NSB necesarios?
 – 
Adam Fyles
2 feb. 2012 a las 19:53

1 respuesta

La mejor respuesta

NServiceBus devolverá nulo si ya se ha creado un autobús. Por lo tanto, determine si alguien ya está creando una instancia de un autobús para usted.

En mi escenario, estábamos definiendo de forma inconsistente configuraciones de puntos finales. En un proceso, implementaríamos IConfigureThisEndpoint y luego configuraríamos explícitamente y crearíamos una instancia de un bus. En otro proceso, heredaríamos de AsA_Publisher que implícitamente crea un bus para usted; y cuando llegara el momento de definir explícitamente la configuración de nuestro bus para este otro proceso, lanzaríamos NullReferenceException en el método CreateBus fluido. Eliminar la herencia AsA_Publisher resolvió el problema.

¡Espero que esto ayude!

0
johnny g 29 ago. 2012 a las 21:32