private bool InDeadLetterStore(Guid messageGuid, out MongoDeadLetterDocument mongoExtractJob) { mongoExtractJob = _deadLetterStore .Find(Builders <MongoDeadLetterDocument> .Filter.Eq(x => x.MessageGuid, messageGuid)) .SingleOrDefault(); return(mongoExtractJob != null); }
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); } }