2017-12-04 28 views
0

게시 방법 중 하나만 설명합니다 here. 다른 방법이 있습니까? 이 예제에서는 persistentEntityRegistry를 사용하지 않고 동적 항목 ID와 사용자 지정 이벤트로 게시해야합니다. 그리고 eventId로 이벤트를 게시하려면 어떻게해야합니까?카프카 (Kafka)와의 Lagom 게시 메시지

@Override 
    default Descriptor descriptor() { 
    return named("helloservice").withCalls(
     pathCall("/api/hello/:id", this::hello), 
     pathCall("/api/event/:id", this::pushEventWithId) // id - eventId 
    ) 
     .withTopics(
     topic(GREETINGS_TOPIC, this::greetingsTopic) 
    ) 
     .withAutoAcl(true); 
    } 

처리 요청.

public ServiceCall<RequestMessage, NotUsed> pushEventWithId(String eventId) { 
    return message -> { 
     // Here I need push this message to kafka with eventId. Another service should be subscribed on this eventId 

    } 
} 

Lagom 버전이 현재 지원되지 않습니다 1.3.10

답변

0

. 당신이 할 수있는 일은 카프카 클라이언트를 인스턴트 화하여 메시지를 공개적으로 게시하는 것입니다.

Lagom이 아직 지원을 추가하지 않은 이유 중 하나는 향후 메시지를 공개적으로 게시하기위한 지원이 추가되는 반면, 사람들이이를 원할 때 매우 자주 해당 시스템에 안티 패턴을 도입한다는 것입니다. 불일치의 기회. 예를 들어, 일부 데이터베이스를 업데이트하는 서비스가 있고 Kafka에 메시지를 게시하는 경우 문제가 발생합니다. 데이터베이스 업데이트가 성공했지만 메시지 게시가 실패한 경우 아무 것도 해당 업데이트를받을 수 없기 때문에 문제가 발생합니다. 시스템이 일관성없는 상태가됩니다. 이 문제의 원인과 이벤트 로그의 게시 이벤트가 어떻게 해결되는지에 대한 자세한 내용은 this presentation을 참조하십시오.

+0

답변 해 주셔서 감사합니다. 카프카 클라이언트에서 직접 해냈습니다. –