gpt4 book ai didi

java - 我们如何将 lagom 的读取端处理器与 Dgraph 结合使用?

转载 作者:行者123 更新时间:2023-11-30 06:09:32 24 4
gpt4 key购买 nike

我是 lagom 和 dgraph 的新手。我陷入了如何将 lagom 的读取端处理器与 Dgraph 结合使用的困境。只是为了给您一个想法,以下是使用 Cassandra 和 lagom 的代码。

import akka.NotUsed;
import com.lightbend.lagom.javadsl.api.ServiceCall;
import com.lightbend.lagom.javadsl.persistence.cassandra.CassandraSession;
import java.util.concurrent.CompletableFuture;
import javax.inject.Inject;
import akka.stream.javadsl.Source;
public class FriendServiceImpl implements FriendService {

private final CassandraSession cassandraSession;

@Inject
public FriendServiceImpl(CassandraSession cassandraSession) {
this.cassandraSession = cassandraSession;
}

//Implement your service method here

}

最佳答案

Lagom 不为 Dgraph 提供开箱即用的支持。如果您必须将 Lagom 的 Read-Side 处理器与 Dgraph 一起使用,那么您必须使用 Lagom 的 Generic Read Side support 。像这样:

/**
* Read side processor for Dgraph.
*/
public class FriendEventProcessor extends ReadSideProcessor<FriendEvent> {
private static void createModel() {
//TODO: Initialize schema in Dgraph
}

@Override
public ReadSideProcessor.ReadSideHandler<FriendEvent> buildHandler() {
return new ReadSideHandler<FriendEvent>() {
private final Done doneInstance = Done.getInstance();

@Override
public CompletionStage<Done> globalPrepare() {
createModel();
return CompletableFuture.completedFuture(doneInstance);
}

@Override
public CompletionStage<Offset> prepare(final AggregateEventTag<FriendEvent> tag) {
return CompletableFuture.completedFuture(Offset.NONE);
}

@Override
public Flow<Pair<FriendEvent, Offset>, Done, ?> handle() {
return Flow.<Pair<FriendEvent, Offset>>create()
.mapAsync(1, eventAndOffset -> {
if (eventAndOffset.first() instanceof FriendCreated) {
//TODO: Add Friend in Dgraph;
}

return CompletableFuture.completedFuture(doneInstance);
}
);
}
};
}

@Override
public PSequence<AggregateEventTag<FriendEvent>> aggregateTags() {
return FriendEvent.TAG.allTags();
}
}

对于FriendEvent.TAG.allTags(),您必须在FriendEvent接口(interface)中添加以下代码:

int NUM_SHARDS = 20;

AggregateEventShards<FriendEvent> TAG =
AggregateEventTag.sharded(FriendEvent.class, NUM_SHARDS);

@Override
default AggregateEventShards<FriendEvent> aggregateTag() {
return TAG;
}

希望这会有所帮助!

关于java - 我们如何将 lagom 的读取端处理器与 Dgraph 结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50571546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com