Пример #1
0
        /// <summary>
        /// Initializes a message journal on the supplied
        /// <paramref name="configuration"/>
        /// </summary>
        /// <param name="configuration">The journal configuration</param>
        /// <returns>Returns a task whose result is the initialized message journal</returns>
        public async Task <IMessageJournal> InitMessageJournal(IConfiguration configuration)
        {
            var providerName = configuration?["provider"];

            if (string.IsNullOrWhiteSpace(providerName))
            {
                await _diagnosticService.EmitAsync(
                    new DiagnosticEventBuilder(this, DiagnosticEventType.ConfigurationDefault)
                {
                    Detail = "Message journal disabled"
                }.Build());

                return(null);
            }

            var provider       = GetProvider(providerName);
            var messageJournal = await provider.CreateMessageJournal(configuration);

            if (messageJournal == null)
            {
                return(null);
            }

            var messageJournalType = messageJournal.GetType().FullName;

            var categories          = new List <MessageJournalCategory>();
            var journalSentMessages = configuration?.GetValue("sent", true) ?? false;

            if (journalSentMessages)
            {
                categories.Add(MessageJournalCategory.Sent);
            }

            var journalReceivedMessages = configuration?.GetValue("received", true) ?? false;

            if (journalReceivedMessages)
            {
                categories.Add(MessageJournalCategory.Received);
            }

            var journalPublishedMessages = configuration?.GetValue("published", true) ?? false;

            if (journalPublishedMessages)
            {
                categories.Add(MessageJournalCategory.Published);
            }

            var filteredMessageJournalingService = new FilteredMessageJournal(messageJournal, categories);

            messageJournal = filteredMessageJournalingService;

            await _diagnosticService.EmitAsync(
                new DiagnosticEventBuilder(this, DiagnosticEventType.ComponentInitialization)
            {
                Detail = $"Message journal {messageJournalType} initialized"
            }.Build());

            return(new SanitizedMessageJournal(messageJournal));
        }
Пример #2
0
        /// <summary>
        /// Initializes a message journal on the supplied
        /// <paramref name="configuration"/>
        /// </summary>
        /// <param name="configuration">The journal configuration</param>
        /// <returns>Returns a task whose result is the initialized message journal</returns>
        public async Task <IMessageJournal> InitMessageJournal(JournalingElement configuration)
        {
            var myConfig = configuration ?? new JournalingElement();

            if (string.IsNullOrWhiteSpace(myConfig.Provider))
            {
                await _diagnosticService.EmitAsync(
                    new DiagnosticEventBuilder(this, DiagnosticEventType.ConfigurationDefault)
                {
                    Detail = "Message journal disabled"
                }.Build());

                return(null);
            }

            var provider       = GetProvider(myConfig.Provider);
            var messageJournal = await provider.CreateMessageJournal(myConfig);

            if (messageJournal == null)
            {
                return(null);
            }

            var messageJournalType = messageJournal.GetType().FullName;

            var categories = new List <MessageJournalCategory>();

            if (myConfig.JournalSentMessages)
            {
                categories.Add(MessageJournalCategory.Sent);
            }
            if (myConfig.JournalReceivedMessages)
            {
                categories.Add(MessageJournalCategory.Received);
            }
            if (myConfig.JournalPublishedMessages)
            {
                categories.Add(MessageJournalCategory.Published);
            }

            var filteredMessageJournalingService = new FilteredMessageJournal(messageJournal, categories);

            messageJournal = filteredMessageJournalingService;

            await _diagnosticService.EmitAsync(
                new DiagnosticEventBuilder(this, DiagnosticEventType.ComponentInitialization)
            {
                Detail = $"Message journal {messageJournalType} initialized"
            }.Build());

            return(new SanitizedMessageJournal(messageJournal));
        }