0

Azure 함수를 통해 데이터베이스에 데이터를 쓸 때 교착 상태 문제를 해결할 수있는 방법을 찾으려고 여기 앉아 있습니다. 내가 워크 플로우에서 뭘하는지Azure 함수를 통해 Azure Sql 데이터베이스의 테이블에 데이터를 쓰면 데드락이 발생합니다.

은 다음과 같습니다 Servicebus 큐 로직 앱을 통해

  • 얻기 데이터/콘텐츠입니다.
  • 데이터를 Azure 함수에 보냅니다.
  • Azure SQL 데이터베이스로 트랜잭션을 만들기 전에 객체에서 모든 가져 오기 데이터를 추출하고 삽입을 대기열에 포함하여 Azure 함수에서 데이터를 처리합니다.

그러나 로직 애플리케이션이 "스레드 업"을 시작하기 때문에/또는 데이터베이스에 대한 트랜잭션이 다른 삽입 트랜잭션과 동일한 테이블에 데이터를 쓰고있을 때 많은 "인스턴스"가 시작되기 때문에 교착 상태가 발생합니다.

누군가이 문제를 해결하기 위해이 문제를 해결할 수있는 좋은 방법이나 알려진 기술을 알고 있습니까?

+0

다음을 참조하십시오. https://github.com/Azure/azure-webjobs-sdk-script/issues/774 –

+0

저장 프로 시저를 사용하고 있습니까? 삽입하는 것보다 더 많은 것을하고 있습니까? –

답변

0

Azure 기능에서 서비스 버스 메시지를 처리하는 데 Logic Apps가 필요하지 않습니다. 함수에는 Function Apps 내에서 직접 수행 할 Service Bus Trigger이 있습니다.

이렇게하면 host.json 파일을 변경하여 병렬 실행 양을 제어 할 수 있습니다. 서비스 버스의 경우 매개 변수는 maxConcurrentCalls입니다. 기본값은 16이지만, 1로 설정할 수 있습니다.

물론 앱 인스턴스의 모든 메시지는 기능에서 기대할 수있는 처리량을 제한합니다. 순차적으로 처리됩니다. 따라서 특정 유스 케이스의 매개 변수의 균형을 유지해야합니다.

+0

흠, 그래, 음, 그게 내가 위의 워크 플로우에서 다른 커넥터 사이에 몇 가지 물건을 다하고 있습니다. 함수가 논리 응용 프로그램의 일부이지만 maxConcurrentCalls를 제어 할 수있는 방법이 아직 있습니까? – John