주기적으로 외부 웹 서비스에서 객체 ID 목록을 검색하고 누락 된 항목을 포함 된 RavenDb 데이터베이스에 추가하려는 백그라운드 스레드가 조정 프로세스를 사용하고 있습니다. 다음RavenDb에 쓰기 직후에 일관성없는 데이터를 반환합니다.
foreach (var pageId in listOfPageIds)
{
if (_contentService.GetPageByPageId(pageId) == null)
{
_contentService.AddPage(pageId);
}
}
GetPageByPageId()
및 AddPage()
의 구현이다 : 목록 중복 ID를 가지고있는 경우
public Page GetPageByPageId(string pageId)
{
using (var session = DocumentStore.OpenSession())
{
return session.Query<Page>().FirstOrDefault(page => page.PageId == pageId);
}
}
public bool AddPage(string pageId)
{
var page = GetPageByPageId(pageId);
if (page != null)
{
return false;
}
using (var session = DocumentStore.OpenSession())
{
var newPage = new Page() {PageId = pageId};
session.Store(newPage);
session.SaveChanges();
}
return true;
}
은 그것이 추가 문제는 일단 것으로이 과정을 수행하는 루프는 다음과 같다 첫 번째 id를 확인하고 해당 id를 다시 확인하면 결과가 비어 있습니다. 마치 새로 추가 된 엔티티를 등록하는 마무리 단계가없는 것입니다. 나중에 다른 스레드에서 세트를 조회하면 해당 ID를 가진 엔티티가 리턴됩니다. 누구든지 문제가 무엇인지 볼 수 있습니까? 이 까마귀가 채택한 최종 일관성 모델의 결과이다
빠른 응답 주셔서 감사합니다. 실제로 문제가되었습니다. – ambog36