2017-11-13 10 views
0

이벤트 저장소에서 프로젝션을 업데이트하려고합니다. 다음 라인은 모든 이벤트를로드합니다 :prooph 이벤트 스토어에서 현재 no를 얻으십시오.

$events = $this->eventStore->load(new StreamName('mystream')); 

은 현재 난 단지 처리되지 이벤트를로드하려고 fromNumber 매개 변수를 전달하여 :

$events = $this->eventStore->load(new StreamName('mystream'), 10); 

이 40하지만 난 15에서 예 : 모든 이벤트를로드 결과의 현재/최고 "아니오"를 파악할 방법이 없습니다. 하지만 다음 번에이 항목에서만로드하는 것이 필요합니다.

데이터베이스가 잘린 경우 (다시 시작한 시퀀스 포함) 실제 문제가 아니므로 이벤트가 1부터 시작한다는 것을 알고 있습니다. 그러나 기본 키가 1보다 큰 숫자로 시작하는 경우 어떤 이벤트가 있는지 알 수 없습니다 이벤트 저장소의 번호

답변

1

pdo-event-store를 사용하는 경우로드 한 후 이벤트 메타 데이터에 _position 키가 있으므로 읽기 모델은 마지막으로 작업 한 위치를 추적 할 수 있습니다. 그 외의 경우, 당신이 proophs 이벤트 저장소 예상과 함께 작업하는 경우, 당신은 전혀 신경 쓸 필요가 없습니다. 프로젝터는 필요한 모든 스트림에 대한 현재 이벤트 위치를 내부적으로 추적합니다. 필요한 작업을 수행 할 때마다 콜백을 제공하면됩니다.

+0

내가 사용하는'\ Prooph \ EventStore \ PDO \ PostgresEventStore' 이벤트 메타 데이터는 다음과 같습니다 는 _aggregate_id = "e0778d9f-81de-4326-b95e-96ae51532ad5" _aggregate_type는 = "직원" _aggregate_version 1 그래서이 = no_position i 내 경우 – nblum

+0

코드 줄을 확인하고 디버그하고 필요하면 github 문제를 제기하십시오. https://github.com/prooph/pdo-event-store/blob/master/src/PdoStreamIterator.php#L119- L121 –

+0

내 실수로 pdo-event-store의 v1.0.0을 사용했습니다. 1.5.3에서 작동 중입니다. – nblum