2016-12-29 6 views
1

Akka 지속성 쿼리는 미리 정의 된 작업을 다음 있습니다 :Akka 영속성 쿼리를 사용하여 모든 저널 이벤트를 검색하는 방법은 무엇입니까?

EventsByPersistenceId EventsByTag CurrentEventsByPersistenceId CurrentEventsByTag AllPersistenceIds

하지만 나는 모든 과거의 사건, CurrentEvents 작업의 일종을 얻을 필요가 있다면? Akka 영속성 쿼리 용어로 어떻게 구현할 수 있는지 알 수 없습니다.

답변

2

퍼시스턴스 쿼리 모듈에 익숙하지 않지만, 이러한 작업은 모두 일부 akka-streams 소스를 정의합니다. 다음과 같이 그들을 결합하려고 시도 할 수 있습니다 :

def currentEvents(fromSequenceNr: Long, toSequenceNr: Long): Source[EventEnvelope, NotUsed] = 
    currentPersistenceIds().flatMapConcat(id => currentEventsByPersistenceId(id, fromSequenceNr, toSequenceNr)) 

+0

감사 (동시성 폭과 flatMapMerge은 당신이 parallelise하고 싶은 경우에 flatMapConcat의 대안입니다). 이것은 가능성 일 수 있습니다. 나는이 방법의 효율성에 대해 확신하지 못한다. (먼저 모든 영속성 ID를 얻은 다음 각각의 이벤트를 얻는다.) 대 라이브 스트림의 스냅 샷을 얻는다. 그러나 전체 라이브 스트림의 스냅 샷에 대한 방법이있는 것처럼 보이지는 않습니다. –

+0

예, 효과가 있다고 생각합니다. 감사합니다. –