2014-05-22 3 views
1

나는 현재 토폴로지가 설정 한 그 GitHub의에 tomdz에서 만든 에스퍼 볼트를 사용한다. tuple anchoring을 제외하고는 모든 것이 잘 작동하는 것처럼 보입니다.스톰 에스퍼 볼트 튜플 앵커

public void update(EventBean[] newEvents, EventBean[] oldEvents, EPStatement statement, EPServiceProvider epServiceProvider) 

여기서 문제는 내가 튜플 트리에서 이전 튜플에 대한 참조를 필요가 없다는 것입니다 다음 에스퍼 볼트 자체가에서

콜백입니다. 누군가가 자신의 프로젝트에서이 문제가 발생 경우

collector.emit(new Values(eventName, eventGrouping, eventDescription, correlatedValues)); 

가 궁금 : 나는 순서대로 다음 볼트에 내 에스퍼 결과를 방출 갈 때 나는 고정을위한 튜플를 제공 할 수없는 나는, 의미? 그렇다면 어떻게이 문제를 해결 했습니까? 내 토폴로지 전체에서 메시지 안정성을 보장하기 위해 앵커링을 사용하고 싶습니다.

답변

1

하나의 옵션은 속성으로 에스퍼 입력 이벤트에 폭풍 튜플을 연결하고 에스퍼 EPL이 속성을 선택 중 하나 "originaltuple을 선택" "* 선택"또는하여 확인하는 것입니다. 그러면 청취자는이를 사용할 수 있습니다.

다른 옵션은 당신이 가진 수있는 몇 가지 이벤트 ID를 사용하여 에스퍼의 외부를 추적하는 것입니다. 또는 입력 이벤트를 튜플에 매핑하는 ID 해시 맵을 통해 입력 이벤트 ID를 사용하십시오. 그런 다음 리스너는 Esper가 리스너에게 전달한 참조와 동일한 참조 인 Esper 입력 이벤트를 기반으로 조회를 수행하고 제거해야합니다.

+0

나는 두 번째 제안을 위해 결국 갔다. 내 EsperBolt 내가 큐에 튜플을 추가 에스퍼 엔진에 이벤트를 전송 . Esper가 나중에 결과를 생성 할 때 동일한 큐를 폴링하고 원본 튜플을 검색합니다. 그런 다음이 튜플을 사용하여 튜플 트리를 완성 할 수 있습니다. –