카탈로그 게시 프로세스 에 대한 책임이있는 saga-service ProcessCatalog가 있습니다.NServicebus 및 서비스 구현을 통한 경쟁 조건
클라이언트 응용 프로그램에서 PublishCatalog 메시지를 보냅니다. 각 메시지에는 catalogid와 항목 목록이 들어 있습니다.
나는 catalogid를 SagaId로 선택했습니다.
ProcessCatalog 서비스는 적절한 다른 비즈니스 서비스를 정렬하는 장기 실행 비즈니스 프로세스입니다.
현재 카탈로그 항목 구성이 드라이브 게시 프로세스임을 염두에 두어 ProcessCatalog가 필요합니다. 동일한 사용자는 (itemList에 = {A, D를 PublishCatalog을 보내 (catalogId에 = 1 ITEMLIST = {A, B, C}) 다음 카탈로그를 조성을 변경 UI 버튼을 제 1 시간에 충돌 여부를 어떻게됩니까
, E}) UI 단추에 다른 시간을 클릭하여 동일한 CatalogId에 대해 다른 PublishCatalog를 보내시겠습니까?내 ProcessCatalog 끝 점이 하나의 workerthread로 구성되어 있으면 모두 작동합니다 (내 생각 엔) . 그러나 workthread가 1보다 크고 2 메시지가 동시 처리되는 경우 어떻게됩니까? 두 번째 스레드가 첫 번째 스레드 전에 실행을 완료하면 어떻게됩니까?
저는 비즈니스 디자인 버그 또는 일반적인 기술적 인 문제인지 묻습니다.
안녕하세요, 아담, 사업 적 관점에서 당신이 옳고 나는 당신의 견해를 이해했습니다. 그러나 내 의심은 경쟁 조건 시나리오와 관련이 있습니다. workthread가 1보다 크고 2 개의 메시지가 동시에 처리되면 어떻게됩니까? 두 번째 스레드가 첫 번째 스레드 전에 실행을 완료하면 어떻게됩니까? 사가 행을 카탈로그 ID와 관련하여 잠글까요? – Alberto
동시성 문제가 있다고 생각하지 않지만 그렇게했다면 행에 대한 잠금이되고 첫 번째 수준의 재시도가 발생하며 처음으로 첫 번째 서비스가 제공됩니다. –