Рекомендации по опросу новых документов в RavenDB - PullRequest
3 голосов
/ 29 июня 2011

Я хочу опросить новые документы в моей БД Raven.Каков рекомендуемый способ сделать это?Могу ли я использовать IndexTimestamp или могу полагаться на порядок документов?

Думаю, я хочу сделать это в два этапа: 1. Проверить, есть ли что-то новое, если так: 1.1.Получите последние X документов.

Или в один шаг: получите последние X-документы и попросите их вернуть их или скажите, что нет ничего нового в соответствии с некоторым аргументом, который я отправил.документы.

1 Ответ

1 голос
/ 05 ноября 2013

Я бы не стал опрашивать его, но я бы использовал API изменений, включенный в RavenDB, чтобы просто получать непрерывный поток документов из RavenDB.

Ознакомьтесь с API изменений здесь http://ravendb.net/docs/2.0/client-api/changes-api

Я бы лично использовал API-интерфейс изменений с какой-либо шиной сообщений (RabbitMQ), чтобы гарантировать, что каждое изменение обрабатывается и становится устойчивым.

Если вы все еще хотите опросить, просто создайте индекс с указанием даты и времени.сортировка по убыванию.

var result = session.Query<Orders>()
                    .OrderByDescending(x => x.Created)
                    .Take(10)
                    .ToList();

Если вам нужно обработать каждый документ, вы можете создать маркерные документы, содержащие идентификатор полученного вами документа, и убедиться, что они не были обработаны.

Для этого:

marker id : polling/processed/order/1

Индекс:

from o in orders
let processed = LoadDocument("polling/processed/" + o.Id)
select new {
   WasProcessed = processed != null,
   Created = o.Created
}

Несколько вариантов для вас, надеюсь, это поможет:)

...