SQL Azure 데이터베이스 (현재는 여전히 로컬 SQL 2012 인스턴스를 사용하는)에 대해 작업하는 특정 끝점에 여러 메시지 처리기가 있습니다. 두 이벤트를 게시하는 명령 처리기가 X 및 Y 호출합니다. 같은 끝점에서 X 구독자 및 Y 구독자가 있습니다. 이러한 구독자는 모두 내부적으로 Z라는 동일한 데이터 액세스 구성 요소를 사용합니다. 종속성 주입은 공유가 아닌 호출 단위로 구성됩니다.Azure 서비스 버스 전송을 사용하는 NServicebus에서의 트랜잭션
구성 요소 Z는 커튼 아래에서 Entity Framework 6을 사용하고 있습니다. 내가 겪고있는 문제는 데이터베이스를 여는 것이 SqlException을 던지고 MSDTC 에스컬레이션에 대해 불평하고 있다는 것입니다.
일시적으로 TransactionScope.Suppress에서 처리기를 래핑했는데 그 오류가 중지되었지만보다 근본적인 것이 누락되었다고 생각합니다.
끝점을 비 트랜잭션으로 구성하는 간단한 문제입니까? Azure Service Bus를 전송 메커니즘으로 사용하도록 구성했기 때문에이 기능이 제대로 작동 할 것이라고 생각했을 것입니다. 메시지 처리기 내에서 예외가 발생하면 NServiceBus가 여전히 재 시도합니다. (SLR 한도까지 - 질문의 일부가 아니며, 나는 멱도 문제를 이해한다.)
NServiceBus 전송 용으로 또는 단순히 데이터 저장소로 SQL Server를 사용하고 있습니까? Azure 서비스 버스 전송의 경우 - NSB는 평소와 같이 FLR (SLR이 구성된 경우)으로 예외를 재 시도합니다. –
구성 문제 인 것처럼 보이지만 설정을 이해하는 데 어려움을 겪고 있습니다. (NServiceBus 전송은 어떤 것을 사용합니까?) –
SQL Server는 데이터 저장소로만 사용되고 있습니다. Azure Service Bus를 전송 수단으로 사용하고 있습니다. 또한 트랜잭션이 아닌 트랜잭션을 만들면 FLR 또는 SLR 재시도를 얻지 못할 것이라고 읽었습니다. 그 맞습니까. –