2017-12-04 16 views
0

公開方法は1つだけですhere。 別の方法がありますか? この例では、persistentEntityRegistryを使用せずに動的トピックIDとカスタムイベントを使用してパブリケーションを作成する必要がありますか? eventIdでイベントを公開するにはどうすればよいですか?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がまだサポートを追加していないという理由の1つは、将来的にメッセージをパブリッシュするためのサポートが追加される一方で、実際にこのようなサポートを追加していない理由の1つです。不一致の可能性たとえば、あるデータベースを更新するサービスがあり、カフカにメッセージを発行すると、問題が発生します。なぜなら、データベースの更新は成功したにもかかわらず、メッセージの公開が失敗し、その更新を取得するものは何もないからです。システムは矛盾した状態になります。なぜこれが問題であるのか、そしてイベントログからのパブリッシングイベントがどのようにそれを解決するのかを詳しく調べるには、this presentationをどうぞ。

+0

ありがとうございました。 私はKafkaクライアントと直接行っていました。 –

関連する問題