Exemplo n.º 1
0
        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);
        }