通知实体何时在lagom中发生变化



假设有记录实体,creterecord命令和记录创建的事件。我想对一个或多个其他实体(在不同的模块中(调用一些命令。实现这一目标的建议方法是什么?

我正在考虑从记录实体的阅读方处理程序发送一条消息,该消息可以通过相应的服务接收,该服务将其转换为命令并调用实体。

编辑,谢谢 @ignasi35:根据消息经纪API出版,该代码可能会出现消息。

AggregateEventTag<RecordEvent> RECORD_EVENT_TAG = AggregateEventTag.of(RecordEvent.class); 
public Topic<RecordMessage> recordsTopic() {
    return TopicProducer.singleStreamWithOffset(offset -> {
        return persistentEntityRegistry
                .eventStream(RECORD_EVENT_TAG, offset)
                .map(this::convertEventToRecordMessage);
    });
}

创建了记录,并持续存在相应的事件,但是以下消费者未收到任何消息:

@Singleton
public class RecordsConsumer {
    @Inject
    public RecordsConsumer(RecordService recordService){
        recordService.recordsTopic().subscribe()
            .atLeastOnce(Flow.fromFunction(this::displayMessage));
    }
}

我在做什么错?

最终解决了它。

我最终获得了一项单身人士服务,听了persistententityregistram.eventstream的记录创作的事件。该服务将它们转换为录音,并将其视为主题(请参见上面的问题(。

不从暴露的主题中接收任何会员的问题是对Kafka-broker的依赖(奇怪的是没有警告此问题,并且主题没有暴露(,在我的情况下,这是:

<dependency>
    <groupId>com.lightbend.lagom</groupId>
    <artifactId>lagom-javadsl-kafka-broker_2.12</artifactId>
</dependency>

最新更新