면책 조항 : 이것은 my other question about NServiceBus에서 후속 질문 인 answered very thoroughly입니다.NServiceBus, NHibernate 및 GuidComb()
내 현재 질문 : 웹 사이트가 위에 언급 된 문서처럼 '벙어리'로 작성된 경우 다음 시나리오가 어떻게 작동합니까?
사용자는 관련 세부 정보가있는 양식을 작성하여 웹 사이트에 등록합니다. 사용자가 양식의 '제출'버튼을 클릭하면 웹 응용 프로그램은 양식 데이터를 가져 와서 NServiceBus 및 Bus.Send()를 사용하여 응용 프로그램 계층에 보내는 메시지를 작성합니다. 애플리케이션 계층은 새로운 사용자를 생성하고 사용자가 생성 한 이벤트 (Bus.Publish())를 게시하여 다른 프로세스가 자신의 일을 할 수 있도록합니다 (새 사용자를 이메일로 보내고 검색 색인에 사용자를 추가하는 작업). , 등).
이제이 시나리오의 웹 응용 프로그램은 새로운 사용자 인스턴스를 만드는 응용 프로그램 계층에 완전히 의존하므로 사용자의 ID를 어떻게 알 수 있습니까? 이 시나리오에서 NServiceBus를 사용하지 않고 웹 사이트가 DAL에 대한 in-process 호출을하도록하면 NHibernate의 GuidComb() 전략을 사용하여 새 사용자의 식별자를 생성 한 후 데이터 베이스. 새 사용자를 생성하라는 명령을받는 메시지 처리기 응용 프로그램 (현재 시나리오에서)이 동일한 전략을 사용하는 경우 userId가 웹 응용 프로그램으로 어떻게 다시 전달됩니까?
이와 같은 시나리오에서 식별자를 관리하기 위해 다른 전략을 적용해야합니까?
안녕하세요. 이는 좋은 생각입니다. 두 시스템간에 오류가 전달되고 각 시스템에서 다른 식별자로 유지되는 예외 차폐와 비슷한 것을 사용했습니다. 그러나이 시나리오에서 상관 식별자의 수명은 얼마입니까? 동일한 웹 요청에서 사용자 ID가 나에게 다시 입력되도록 할 필요는 없습니다.하지만 실제 ID를 사용하는 대신 실제 userId를 최대한 많이 사용하고 싶습니다. 콤비네이션. 그렇지 않으면 두 개의 ID에 대해 색인을 생성해야합니다 ... 흠! 생각할 거리. 좋은 제안. 감사! –
사용자 작성 프로세스와 관련된 메시지/이벤트를 상관 시키려면 상관 ID _only_를 사용해야합니다. – mookid8000
사용자가 생성되고 사용자 ID가 알려지 자마자 사용자를 생성하는 프로세스에 "로컬"이므로 상관 ID를 버려야한다고 말하고 싶습니다. – mookid8000