Пример #1
0
        private bool InDeadLetterStore(Guid messageGuid, out MongoDeadLetterDocument mongoExtractJob)
        {
            mongoExtractJob = _deadLetterStore
                              .Find(Builders <MongoDeadLetterDocument> .Filter.Eq(x => x.MessageGuid, messageGuid))
                              .SingleOrDefault();

            return(mongoExtractJob != null);
        }
Пример #2
0
        public void PersistMessageToStore(BasicDeliverEventArgs deliverArgs, IMessageHeader header, TimeSpan retryAfter)
        {
            _logger.Debug("Persisting message " + header.MessageGuid + " to store");

            Guid messageGuid      = header.MessageGuid;
            var  newDeadLetterDoc = new MongoDeadLetterDocument(deliverArgs, header.MessageGuid, DateTime.UtcNow + retryAfter);

            lock (_oDbLock)
            {
                MongoDeadLetterDocument _;
                if (InDeadLetterStore(messageGuid, out _))
                {
                    throw new ApplicationException("Message already exists in store");
                }

                _deadLetterStore.InsertOne(newDeadLetterDoc);
            }
        }