2017-11-19 12 views
1

Azure에서 실행되는 두 개의 다른 webjob (예정된 일정과 연속 한 약속)이 있습니다. 첫 번째 webjob의 코드 조각이 두 번째 webjob의 코드 조각과 충돌합니다 (코드가 정확히 동일하지 않음). 병렬로 실행하지 못하게하고 싶습니다.다른 Azure webjobs에 대한 C# 코드 잠금

여기에 BLOB 임대를 사용할 생각입니다. 또는 here을 읽으면 Azure Webjobs SDK가 싱글 톤 속성을 지원합니다. 다른 webjob의 메소드에이 속성을 적용하고 공통 범위 (또는 공통 잠금)를 가질 수 있습니까?

다른 방법이 있습니까?

답변

1

이 속성을 다른 webjob의 메소드에 적용 할 수 있으며 공통 범위 (또는 공통 잠금)를 가질 수 있습니까?

내 경험에 비추어 볼 때 blob lease을 사용하는 것이 좋습니다.

블롭리스를 사용하면 Blob에 소유권을 주장 할 수 있습니다. 임대 계약을 체결 한 후에는 Blob을 업데이트하거나 Blob을 삭제할 수 있습니다.


당신은 어떤 다른 방법을 생각할 수 있는가?

ETags 또한 낙관적 인 동시 제어에 사용됩니다. 자세한 내용은 this을 참조 할 수 있습니다.

문자열 의 ETag (R/O) -이 리소스의 특정 버전에 대한 식별자이다. 이것은 웹 캐시 유효성 검사에 사용되며 클라이언트가 조건부 요청을 할 수있게합니다. ETags는 낙관적 인 동시 제어에도 사용됩니다. 예를 들어, BLOB을 읽고 ETag를 저장 한 다음 다른 처리를 수행하고 해당 BLOB의 새 버전을 업로드 한 경우 ETag를 다시 읽고 이전 값과 비교하여 확인할 수 있습니다. ETag 값이 일치하면 파일이 변경되지 않고 새 버전을 업로드 할 수 있습니다. 일치가 실패하면 스토리지 서비스는 412 오류 (전제 조건 실패)를 반환합니다.