0

I am using the NServiceBus.Extensions.Hosting extension to configure NServicebus

 public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    private static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseNServiceBus(c =>
            {
                var endpointConfiguration = new EndpointConfiguration("nsb.medusa");
                endpointConfiguration.UseTransport<RabbitMQTransport>().ConnectionString("How do I access app settings?");
                endpointConfiguration.SendOnly();
                return endpointConfiguration;
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

The problem I am having is that I don't know how to get an instance of IConfiguration from a IHostBuilder. I need IConfiguration so I can get the connection string to RabbitMQ.

Also can this be moved to the startup class?

Martin Andersen
  • 2,460
  • 2
  • 38
  • 66

1 Answers1

1

Microsoft has some excellent documentation. After reading it I just added two lines of code and I can now access the configuration.

 public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    private static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseNServiceBus(c =>
            {
                var configuration = c.Configuration; /* New */
                var cnnStr = configuration.GetSection("mq:connection").Value;  /* New */
                var endpointConfiguration = new EndpointConfiguration("nsb.medusa");
                endpointConfiguration.UseTransport<RabbitMQTransport>().ConnectionString(cnnStr);
                endpointConfiguration.SendOnly();
                return endpointConfiguration;
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}
Martin Andersen
  • 2,460
  • 2
  • 38
  • 66