0

Lagom 1.2.2 でセットアップされた Message Broker を実装しようとしていますが、壁にぶつかりました。ドキュメントには、サービス記述子の次の例があります。

default Descriptor descriptor() {
return named("helloservice").withCalls(...)
  // here we declare the topic(s) this service will publish to
  .publishing(
    topic("greetings", this::greetingsTopic)
  )
  ....;
}

そして、この実装の例:

public Topic<GreetingMessage> greetingsTopic() {
return TopicProducer.singleStreamWithOffset(offset -> {
    return persistentEntityRegistry
        .eventStream(HelloEventTag.INSTANCE, offset)
        .map(this::convertEvent);
  });
}

ただし、関数の引数の型または戻り値の型が何であるかの例はなくconvertEvent()、これは空白を描いているところです。一方、MessageBroker のサブスクライバーは、オブジェクトを消費しているように見えますが、オブジェクトを返すGreetingMessage関数を作成すると、コンパイル エラーが発生します。convertEventGreetingMessage

Error:(61, 21) java: method map in class akka.stream.javadsl.Source<Out,Mat> cannot be applied to given types;
  required: akka.japi.function.Function<akka.japi.Pair<com.example.GreetingEvent,com.lightbend.lagom.javadsl.persistence.Offset>,T>
  found: this::convertEvent
  reason: cannot infer type-variable(s) T
    (argument mismatch; invalid method reference
  incompatible types: akka.japi.Pair<com.example.GreetingEvent,com.lightbend.lagom.javadsl.persistence.Offset> cannot be converted to com.example.GreetingMessage)

これを使用する方法のより完全な例はありますか? 私は既に Chirper サンプル アプリをチェックインしましたが、この例はないようです。

ありがとう!

4

1 に答える 1