我试图实现一个使用Lagom 1.2.2设置的消息代理,并且碰到了墙壁。该文件对服务描述符下面的例子:Lagom消息代理的完整示例
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
对象,但是当我创建了一个功能convertEvent
返回GreetingMessage
对象,我得到一个编译错误:
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示例应用程序中进行了检查,但似乎没有这方面的示例。
谢谢!
感谢;我一直在仔细研究你提供的拍卖示例应用程序,它是有帮助的(尽管它使用'taggedStreamWithOffset'而不是'singleStreamWithOffset'(说实话,可能是我想要的) 部分I失踪的是'convertEvent'的参数;出于某些原因,我假设我搞乱了返回类型,即使当我的返回类型正确并导致我误入歧途时也是如此。 再次感谢您的帮助! –