2017-12-19 9 views
1

저는 cosmos db trigger가있는 하늘색 함수를 사용하여 계산을하고 db에 결과를 씁니다. 무언가가 잘못되면 첫 번째 항목 또는 특정 항목부터 다시 계산을 할 수 있습니다. 가능한가? 감사합니다Azure 함수 CosmosDbTrigger (처음 옵션부터 시작)

public static void Run([CosmosDBTrigger(
     databaseName: "db", 
     collectionName: "collection", 
     ConnectionStringSetting = "DocDbConnStr", 
     CreateLeaseCollectionIfNotExists = true, 
     LeaseCollectionName = "leases")]IReadOnlyList<Document> input, TraceWriter log) 
    { 

     ... 
    } 

답변

2

지금은 StartFromBeginning 옵션이 Cosmos DB 트리거에 노출되지 않습니다. 기본 동작은 기능 실행이 시작된 순간부터 변경 사항을 받기 시작하는 것입니다. 호스트/런타임 종료시리스/체크 포인트가 생성되므로 호스트/런타임이 백업되면 마지막 체크 포인트 항목에서 픽업됩니다.

오류가 일괄 처리 자체와 관련이없는 경우 무한 루프/예기치 않은 청구/여러 처리를 생성 할 수 있으므로 트리거는 데드 레터링 또는 오류 처리를 구현하지 않습니다 (예 : 문서 처리 전자 메일을 보내면 전자 메일은 실패합니다. 전체 일괄 처리는 피드 자체와 관련이없는 오류로 다시 처리됩니다.) 따라서 사용자는 함수 코드 내에서 자체 try/catch 또는 오류 처리 논리를 구현하는 것이 좋습니다. Event Hub Trigger와 같은 접근법입니다.

즉, 우리는 여러 개의 new options on the Trigger을 노출시키는 과정에 있으며 an advanced retrying mechanism에 기여한 공헌자가 있습니다.

1

현재 오프셋 (Cosmos DB 변경 피드의 위치)은이 경우 Azure Functions 런타임 클라이언트에서 관리합니다.

함수는 임대 컬렉션에 오프셋을 저장합니다 (예제에서는 leases이라고 함).

특정 항목에서 다시 시작하려면 특정 시점에 임대 컬렉션의 문서 스냅 샷을 만든 다음 필요할 때 현재 컬렉션을 해당 스냅 샷으로 복원해야합니다.

Cosmos DB 콜렉션을 사용하는 일반 도구 이외에 자동으로 도구를 사용하는 도구에 익숙하지 않습니다.

+0

첫 번째 의견에 감사드립니다. 미안해. 먼저 임대 계약서를 삭제했습니다. 그런 다음 임대 이름을 변경했습니다. 둘 다 작동하지 않았다. –

+0

임대를 제거해도 기능이 처음부터 시작되는 것은 아닙니다. 임대가 없으면 기능은 실행을 시작한 순간 (지금)부터 변경 사항을 수신하기 시작합니다. –