Космос БД - остановка экземпляра IChangeFeedProcessor - PullRequest
0 голосов
/ 30 ноября 2018

Я использую библиотеку процессора изменений каналов, чтобы использовать ленту изменений Cosmos DB.Код создания IChangeFeedProcessor выглядит следующим образом:

var builder = new ChangeFeedProcessorBuilder();
processor = await builder
  .WithHostName(hostName)
  .WithFeedCollection(feedCollectionInfo)
  .WithLeaseCollection(leaseCollectionInfo)
  .WithObserverFactory(observerFactory)
  .BuildAsync();
await processor.StartAsync();

В методе ProcessChangesAsync () реализации IChangeFeedObserver я вызываю внешний API для каждого документа в пакете.

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

Как остановить процессор (используя метод StopAsync ()), когда IChangeFeedObserver.Реализация ProcessChangesAsync () создает исключение?

1 Ответ

0 голосов
/ 30 ноября 2018

Не уверен насчет фактической проблемы, но если проблема в том, как получить доступ к процессору внутри обозревателя, как насчет этого?Вы можете украсить наблюдателя, передать экземпляр CFP декоратору, а затем перехватить / перебросить все исключения, но в остановке CFP.

...