2016-09-12 4 views
3

나는 NiFi 프로세서를 구현하고있다()에서여 session.commit 및 모범 사례에 대한 만들 해명의 부부가합니다 :.이 때 NiFi 프로세서

  1. session.getProvenanceReporter()을 수정 (...) - 우리는 모든 session.transfer() 후 바로 이벤트를 내야합니까?
  2. session.commit() - 설명서에는 flowfile에 대한 작업을 수행 한 후 커밋 또는 롤백을 호출 할 수 있다고 나와 있습니다.

개발자 가이드 : https://nifi.apache.org/docs/nifi-docs/html/developer-guide.html#process_session

질문, 내가 명시 적으로 이러한 메소드를 호출하지 않음으로써 무엇을 잃게합니까?

답변

3

1) 일반적으로 플로렌스 파일을 전송 한 후에 출처 이벤트가 발생합니다.

2) AbstractProcessor 또는 AbstractSessionFactoryProcessor를 확장하는지 여부에 따라 다릅니다. AbstractProcessor는 커밋이나 롤백을 호출 할 필요가 없으므로 AbstractSessionFactoryProcessor에서 적절하게 호출해야합니다.

AbstractSessionFactoryProcessor를 확장하고 커밋을 호출하지 않으면 결국 해당 세션에서 가비지 수집이 발생하고 롤백이 호출되며 해당 세션에서 수행 한 모든 작업이 롤백됩니다.

프로세서에 배치 할 수있는 주석 @SupportsBatching도 있습니다. 이 주석이 있으면 UI는 처리기의 스케줄링 탭에 슬라이더를 보여줍니다.이 슬라이더는 커밋()과 같은 프레임 워크 작업의 몇 밀리 초가 함께 처리되어 처리량을 늘릴 수 있는지 나타냅니다. 대기 시간이 더 중요한 경우 슬라이드를 0 밀리 초로 유지하는 것이 적절하지만 핵심은 여기에서 흐름을 작성하고 프로세서를 구성 할 때 사용자가이를 결정한다는 것입니다.