만들고자하는 것은 .NET 5 Console Application에서 Azure Service Bus의 Queue데이터를 1초 간격으로 POP하는 것입니다.
구글링해서 IHost를 통해 설정파일을 가져오는 것까지는 성공했습니다.
하지만 서비스를 Singleton으로 등록했더니 Service를 호출하기 전까지는 생성자가 호출되는 것도 볼 수 없었고, 그렇다고 Main 함수에 RunAsync를 하기전에 while 무한루프를 돌리자니 이건 아닌거 같습니다. 어떻게 구현 할 수 있을까요?
class Program
{
static async Task Main(string[] args)
{
using IHost host = CreateHostBuilder(args).UseConsoleLifetime().Build();
await host.RunAsync();
}
static IHostBuilder CreateHostBuilder(string[] args)
{
IHostBuilder rtnValue = Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, configuration) =>
{
configuration.Sources.Clear();
IHostEnvironment env = hostingContext.HostingEnvironment;
configuration.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath);
configuration.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
//configuration.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
IConfigurationRoot configurationRoot = configuration.Build();
AzureServiceBusSettings settings = new();
configurationRoot.GetSection(nameof(AzureServiceBusSettings)).Bind(settings);
Console.WriteLine($"AzureServiceBus Key={settings.Endpoint}");
Console.WriteLine($"AzureSerivceBus QueueName={settings.QueueName}");
})
.ConfigureServices((context, services) =>
{
services.Configure<AzureServiceBusSettings>(context.Configuration);
services.AddSingleton<AzureServiceBusService>();
});
return rtnValue;
}
}