gpt4 book ai didi

java - 如何为同步网关创建多个复制器?

转载 作者:行者123 更新时间:2023-12-02 01:56:23 24 4
gpt4 key购买 nike

我创建了一个带有拉取和推送选项的复制器,但问题是我需要从 Couchbase 服务器获取一些文档,而无法推送。谁能帮我解决这个问题吗?注意:我使用的是 couchbase lite 2.5、couchbase server 6.0 和sync gateway 2.5

我当前的推拉复制器

public static void startPushAndPullReplicationForCurrentUser(String username, String password) {
Log.e("Replication", "startPushAndPullReplicationForCurrentUser");
URI url = null;
try {
url = new URI(mSyncGatewayEndpoint);
} catch (URISyntaxException e) {
e.printStackTrace();
}

ReplicatorConfiguration config = new ReplicatorConfiguration(database, new URLEndpoint(url));
config.setReplicatorType(ReplicatorConfiguration.ReplicatorType.PUSH_AND_PULL);
config.setContinuous(true);
config.setAuthenticator(new BasicAuthenticator(username, password));

Replicator replicator = new Replicator(config);
replicator.addChangeListener(new ReplicatorChangeListener() {
@Override
public void changed(ReplicatorChange change) {

if (change.getReplicator().getStatus().getActivityLevel().equals(Replicator.ActivityLevel.IDLE)) {

Log.e("Replication Comp Log", "Schedular Completed");

}
if (change.getReplicator().getStatus().getActivityLevel().equals(Replicator.ActivityLevel.STOPPED)
|| change.getReplicator().getStatus().getActivityLevel().equals(Replicator.ActivityLevel.OFFLINE)) {
// stopReplication();
Log.e("Rep schedular Log", "ReplicationTag Stopped");
}
}
});
replicator.start();
}

所有数据库都附加到推拉复制器,但这是错误的。

最佳答案

如果您希望复制器不推送,请使用 config.setReplicatorType(ReplicatorConfiguration.ReplicatorType.PULL);而不是 PUSH_AND_PULL。我们在我的项目中使用它,我们希望服务器在推送到数据库之前验证记录(验证对于他们简单的验证机制来说太复杂 - 它需要我们获取其他记录,而该机制不允许)。

无法对某些文档进行双向同步,而对其他文档进行单向同步。这是一个全有或全无的设置。如果您需要,您可以做的就是将所有内容都放入 PULL,当您更改要推送的文档时,通过您自己的端点或直接同步网关 API 调用手动将其推送到服务器。但这确实存在使数据库不同步的风险,特别是在文档经常更改的情况下。

关于java - 如何为同步网关创建多个复制器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57396456/

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