为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕后森 2023-05-24 15:31:33
我已经创建了一个带有拉取和推送选项的复制器,但问题是我需要从 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();}所有数据库都附加到推拉复制器,但这是错误的。
查看完整描述

2 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

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

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


查看完整回答
反对 回复 2023-05-24
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

在 2.5 中,您可以使用复制过滤器来做到这一点。在您的情况下,设置一个推拉复制器并定义一个推送复制过滤器以过滤掉您不想推送的文档(仅限本地)。


查看完整回答
反对 回复 2023-05-24
  • 2 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信