private async Task <(Microsoft.Extensions.Logging.LogLevel logLevel, ISlackNotificationsSender sender)> InitSender( Microsoft.Extensions.Logging.LogLevel level, SlackNotificationsSerializer serializer, [NotNull] string azureQueueConnectionString, [NotNull] string azureQueuesBaseName) { return(await Task.Run(() => { var azureQueuePublisher = new AzureQueuePublisher <SlackMessageQueueEntity>( LogFactory.LastResort, serializer, $"Slack log [{level}]", new AzureQueueSettings { ConnectionString = azureQueueConnectionString, QueueName = $"{azureQueuesBaseName}-{level}" }, fireNForgetQueueExistenceCheck: true) .Start(); var sender = new SlackNotificationsSender(azureQueuePublisher, ownQueue: true); return (level, sender); })); }
public static ISlackNotificationsSender UseSlackNotificationsSenderViaAzureQueue( this ContainerBuilder containerBuilder, AzureQueueSettings settings, ILog log = null) { var applicationName = PlatformServices.Default.Application.ApplicationName; var azureQueuePublisher = new AzureQueuePublisher <SlackMessageQueueEntity>(applicationName, settings) .SetLogger(log) .SetSerializer(new SlackNotificationsSerializer()) .Start(); var result = new SlackNotificationsSender(azureQueuePublisher); containerBuilder.RegisterInstance(result).As <ISlackNotificationsSender>().SingleInstance(); return(result); }
public static ISlackNotificationsSender UseSlackNotificationsSenderViaAzureQueue( this IServiceCollection serviceCollection, AzureQueueSettings settings, ILog log = null) { var applicationName = PlatformServices.Default.Application.ApplicationName; var azureQueuePublisher = new AzureQueuePublisher <SlackMessageQueueEntity>(applicationName, settings) .SetLogger(log) .SetSerializer(new SlackNotificationsSerializer()) .Start(); var result = new SlackNotificationsSender(azureQueuePublisher, ownQueue: true); serviceCollection.AddSingleton <ISlackNotificationsSender>(result); return(result); }