最近我使用的是mongodb java异步驱动程序,它是最新发布的。我正在写一些简单的测试代码,它们是:
MongoClient mongoClient = MongoClients.create();
System.out.println("database has been connected!");
SingleResultCallback<Void> callbackWhenFinished = new SingleResultCallback<Void>() {
@Override
public void onResult(final Void result, final Throwable t) {
System.out.println("Operation Finished!");
}
};
mongoClient.listDatabaseNames().forEach(new Block<String>() {
@Override
public void apply(final String s) {
System.out.println(s);
}
}, callbackWhenFinished);
所以您可以看到没有调用回调函数。有人知道为什么吗?
简单的回答是您的回调最终将被调用。
为了获得更长的答案,让我们通过您的代码:
MongoClient mongoClient = MongoClients.create();
System.out.println("database has been connected!");
MongoClient
不会阻止等待连接到后台的MongoDB(内部连接池正在尝试连接)。从您的日志中,我可以看到您的默认ServerSelectionTimeout
为30000ms。
System.out.println("======= Start =======");
MongoClient mongoClient = MongoClients.create();
final CountDownLatch latch = new CountDownLatch(1);
SingleResultCallback<Void> callbackWhenFinished = new SingleResultCallback<Void>() {
@Override
public void onResult(final Void result, final Throwable t) {
System.out.println("Operation Finished!");
if (t != null) {
System.out.println("listDatabaseNames() errored: " + t.getMessage());
}
latch.countDown();
}
};
mongoClient.listDatabaseNames().forEach(new Block<String>() {
@Override
public void apply(final String s) {
System.out.println(s);
}
}, callbackWhenFinished);
latch.await();
// close resources
mongoClient.close();
System.out.println("======= Finish =======");
>
没有MongoDB可用。它最终将调用回调并打印出有错误。它将等待直到ServerSelectionTimeout
超时。
有一个MongoDB可用。它将最终连接,对于每个数据库,它将应用block
并打印出数据库名称,然后最后调用它完成的回调信令。
我正在尝试使用本地文件系统设置spring config cloud。 下面是我在云服务器上的配置。 客户端应用程序上的bootstrap.properties如下所示 步骤2:启动客户端应用程序,客户端应用程序能够从云配置服务器读取属性文件。 步骤3:通过更新hello-world.yaml上的来更改配置。 此时,如果我检查,它仍然显示旧值。 只有当我重新启动云配置服务器时,新的更改才会反映出来
我的Kubernetes集群运行在谷歌云下。我有部署运行端口443和LoadBalancer公开它到互联网。 我是这样创建的: 运行此命令后,loadbalancer将指向部署。现在,我创建了,并希望更改loadbalancer以指向新的部署()。 注意:删除和重新创建部署是释放外部IP地址,我想避免它。 如何在不丢失外部IP的情况下修补现有服务以指向另一个部署?
启动开发环境服务可以设置不同的 hostname,你可以在启动命令后面加上--hostname 主机名 或 -H 主机名。它将会启动一个 TCP 服务器来监听连接所提供的主机。
问题内容: 是否可以使用MySQL客户端编写跨服务器选择查询。基本上,设置如下。 服务器IP数据库 --------- -------- 1.2.3.4测试 abcd测试 我想编写一个查询,该查询将从1.2.3.4的“测试数据库”中的表中选择行,并将结果插入表中的abcd的“测试数据库”中。 我的服务器相距千里,所以我将打开SSH隧道进行连接他们俩。 有指针吗? 问题答案: 可能是已经提到的解决方
问题内容: 我在没有选择器的情况下在Kubernetes的服务中苦苦挣扎。群集通过kops安装在AWS上。我有一个带有3个Nginx Pod的部署,暴露了端口80: 创建部署后,我记下了IP地址: 并创建了一个服务于IP地址的服务: 服务已成功创建: 不幸的是,我尝试通过服务从相同名称空间的另一个Pod连接到Nginx失败: 我可以直接成功地连接到Nginx Pod: 我注意到我的服务没有任何端点
我已经为我的应用程序实现了shedlock,对于我们拥有的两台服务器来说,它运行良好,没有任何问题。 我们现在在另一个域上添加了两个新服务器,shedlock也会选择它们。(好吧,这就是它的本意) 我有一份工作,创建pdf文件并将其放在文件夹中。添加的新服务器无权访问这些文件夹。因此,当这两个新服务器选择作业时,我的作业将失败。 有没有可能告诉夏洛克从我的两台服务器中选择任何一台,或者不选择另外两