internal MessageDispatcher(IServiceScopeFactory scopeFactory, IReceiverClient client, MessageHandlerRegistry registry, LogCorrelationOptions logCorrelationOptions)
 {
     LogCorrelationOptions = logCorrelationOptions;
     ScopeFactory          = scopeFactory;
     Client   = client;
     Registry = registry;
 }
        internal LogCorrelationHandler(bool useCorrelationLogging, LogCorrelationOptions options = null)
        {
            if (!useCorrelationLogging)
            {
                PushToLogContext = (message) => new EmptyContextPusher();
            }
            else
            {
                var logPropertyName     = options?.LogPropertyName ?? "CorrelationId";
                var messagePropertyName = options?.MessagePropertyName ?? "logCorrelationId";

                PushToLogContext =
                    CreatePushToLogContext(logPropertyName, messagePropertyName, options?.SetCorrelationLogId);
            }
        }
Beispiel #3
0
        public static IServiceCollection ConfigureMessagingWithCorrelationLogging(this IServiceCollection services, LogCorrelationOptions logCorrelationOptions, params Assembly[] assemblies)
        {
            var logCorrelationHandler = new LogCorrelationHandler(true, logCorrelationOptions);

            return(services.ConfigureMessaging(logCorrelationHandler, assemblies));
        }
Beispiel #4
0
        public static IServiceCollection ConfigureMessagingWithCorrelationLogging(this IServiceCollection services, LogCorrelationOptions logCorrelationOptions)
        {
            var logCorrelationHandler = new LogCorrelationHandler(true, logCorrelationOptions);

            return(services.ConfigureMessaging(logCorrelationHandler, new[] { Assembly.GetCallingAssembly() }));
        }
        public MessagingConfiguration(IOptions <MessageSources> messageSources, MessageHandlerRegistry registry, IServiceScopeFactory scopeFactory, LogCorrelationOptions logCorrelationOptions)
        {
            SubscriptionClient CreateSubscriptionClient(Subscription s) =>
            new SubscriptionClient(new ServiceBusConnectionStringBuilder(s.ConnectionString), s.Name);

            QueueClient CreateQueueClient(Queue q) =>
            new QueueClient(new ServiceBusConnectionStringBuilder(q.ConnectionString));

            Dispatchers = messageSources
                          .Value
                          .Subscriptions
                          .Select(subscription => new MessageDispatcher(scopeFactory, CreateSubscriptionClient(subscription), registry, logCorrelationOptions))
                          .Concat(
                messageSources
                .Value
                .Queues
                .Select(queue => new MessageDispatcher(scopeFactory, CreateQueueClient(queue), registry, logCorrelationOptions))
                )
                          .ToList();
        }
Beispiel #6
0
        private static IServiceCollection ConfigureMessaging(this IServiceCollection services, LogCorrelationOptions logCorrelationOptions, Assembly assembly = null)
        {
            if (logCorrelationOptions == null)
            {
                throw new ArgumentNullException(nameof(logCorrelationOptions));
            }
            assembly = assembly ?? Assembly.GetCallingAssembly();
            MessageHandlerTypes
            .GetAll(assembly)
            .ToList()
            .ForEach(t => services.AddTransient(t));
            services
            .AddSingleton <MessagingConfiguration>()
            .AddSingleton(p => new MessageHandlerRegistry(() => MessageHandlerTypes.GetAll(assembly)))
            .AddSingleton(logCorrelationOptions)
            .AddHostedService <MessagingService>();

            return(services);
        }
Beispiel #7
0
        public static IServiceCollection ConfigureMessagingWithCorrelationLogging(this IServiceCollection services, string logPropertyName, string messagePropertyName, Assembly assembly = null)
        {
            var logCorrelationOptions = new LogCorrelationOptions(logPropertyName, messagePropertyName);

            return(services.ConfigureMessaging(logCorrelationOptions, assembly));
        }
Beispiel #8
0
        public static IServiceCollection ConfigureMessagingWithCorrelationLogging(this IServiceCollection services, Assembly assembly = null)
        {
            var logCorrelationOptions = new LogCorrelationOptions();

            return(services.ConfigureMessaging(logCorrelationOptions, assembly));
        }