using Billing;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using NServiceBus;
using OpenTelemetry.Trace;
using Sales;
using Shipping;
namespace Worker
{
class Program
{
static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
private static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseNServiceBus(_ =>
{
var endpointConfiguration = new EndpointConfiguration("DistributedTracingDemo");
var transport = endpointConfiguration.UseTransport<LearningTransport>();
endpointConfiguration.UsePersistence<LearningPersistence>();
var routing = transport.Routing();
routing.MapBilling();
routing.MapSales();
routing.MapShipping();
return endpointConfiguration;
})
.ConfigureServices(services =>
{
services.AddOpenTelemetryTracing(builder =>
{
builder.AddSource("worker");
builder.AddZipkinExporter();
builder.AddNServiceBusInstrumentation();
builder.AddHttpClientInstrumentation();
});
services.AddSales();
services.AddShipping();
});
}
}