Esempio n. 1
0
        public async Task mark_as_handled()
        {
            var msg = GetMessage();
            await _sut.Add("bla", msg);

            _sut.MarkMessageHandled("bla", msg.First().Id);

            var all = _sut.GetMessages("bla", 20);

            all.Count().Should().Be(2);
            all.Any(d => d.Id == msg.First().Id).Should().BeFalse();
        }
Esempio n. 2
0
        private void Processor(CancellationToken token)
        {
            var processor = _processorFactory();

            _logName.LogDebug("Starting processor task");

            while (!token.IsCancellationRequested)
            {
                var msg = _cache.GetNextMessage();
                if (msg == null)
                {
                    _logName.LogDebug("No message available, exiting");
                    break;
                }


                try
                {
                    _busAuditor.StartedProcessing(Name, msg);
                    processor.Process(msg, Name);

                    _storage.MarkMessageHandled(Name, msg.Id);
                }
                catch (BusStorageException ex)
                {
                    _logName.LogError(ex);
                }
                catch (SagaConfigurationException ex)
                {
                    _errors.MessageCantBeHandled(msg, ex);
                    _busAuditor.BusConfigurationError(msg, ex, _name);
                }

                catch (MissingHandlerException ex)
                {
                    _errors.MessageCantBeHandled(msg, ex);
                    _busAuditor.BusConfigurationError(msg, ex, _name);
                }

                catch (DiContainerException ex)
                {
                    _errors.MessageCantBeHandled(msg, ex);
                    _busAuditor.BusConfigurationError(msg, ex, _name);
                }

                finally
                {
                    Cache.MessageHandled(msg);
                    _busAuditor.MessageProcessed(Name, msg);
                }
            }

            _logName.LogDebug("Processing ended");
        }