Java 如何使用ReactorCloudFoundryClient启动CloudFoundry应用程序?
我使用Java 如何使用ReactorCloudFoundryClient启动CloudFoundry应用程序?,java,cloud-foundry,Java,Cloud Foundry,我使用StartApplicationRequest创建了一个启动应用程序的示例请求,如下所示: StartApplicationRequest request = StartApplicationRequest.builder() .applicationId("test-app-name") .build(); 然后,我使用ReactorCloudFoundryClient启动应用程序,如下所示: cloudFoundryCl
StartApplicationRequest
创建了一个启动应用程序的示例请求,如下所示:
StartApplicationRequest request = StartApplicationRequest.builder()
.applicationId("test-app-name")
.build();
然后,我使用ReactorCloudFoundryClient
启动应用程序,如下所示:
cloudFoundryClient.applicationsV3().start(请求)代码>
但是我的测试应用程序测试应用程序名称
尚未启动。我使用的是最新的Java CF客户端版本(v4.5.0版本),但没有找到启动应用程序的方法
非常令人惊讶的是,似乎正在使用以下代码:
cfstatus=cfClient.startApplication(“测试应用程序名称”)//启动应用程序
cfstatus=cfClient.stopplication(“测试应用程序名称”)//停止应用程序
cfstatus=cfClient.restartApplication(“测试应用程序名称”)//停止应用程序
我想对最新的CF客户端库也这么做,但我看不到任何有用的参考资料。我参考了CloudFoundry官方Github repo编写的测试用例。在查阅了大量文档后,我获得了以下代码:
StartApplicationRequest request = StartApplicationRequest.builder()
.applicationId("test-app-name")
.build();
cloudFoundryClient.applicationsV3().start(请求)代码>
请注意,cloudFoundryClient
是ReactorCloudFoundryClient
实例,因为最新库不支持与过时代码一起使用的客户端类。我想用最新的库执行所有操作(启动/停止/重新启动)。上面的代码不起作用。这里有几件事
使用基于reactor的客户端,对cloudFoundryClient.applicationsV3().start(request)
的调用将返回一个Mono
。这不是实际的反应,而是可能的反应。你需要做点什么才能得到回应
如果您希望类似于原始cf java客户端的行为,可以在Mono
上调用.block()
,它将等待并变成响应
例:
第二件事是它是.applicationId
而不是applicationName
。您需要传入应用程序guid,而不是名称。实际上,你会得到一个404,说这个应用程序不存在。您可以使用客户端获取guid,也可以改用CloudFoundryOperations
(请参见#3)
这个。一般来说,它更易于使用,并且支持基于名称而不是guid启动应用程序
例:
嗨,丹尼尔。我想知道你是否还没有人编辑你的帖子,让它们少一些对话。Stack Overflow旨在成为技术写作的存储库,因此“希望有所帮助”之类的短语往往会被劝阻和/或删除。我通常不会提及,但你有200多个。你介意以后不要再加这些吗?谢谢大家!@哈弗-我感谢你的观点和反馈。我会考虑的。如果我是诚实的,这是我尝试友好的方式,并为我的帖子增加一些人性化。如果这是错误的,那么我可能是在错误的论坛上贡献知识。我希望你也能理解我的观点。谢谢你的回复。有几个关于元堆栈溢出的讨论代表了社区的立场。这是一个很好的开始,但有很多。我个人的观点是,技术写作本身并不是不友好的,它只是简洁而已。人们不会在阅读学术论文或百科全书文章时认为它不友好——这只是每种媒体的预期风格。
client.applicationsV3()
.start(StartApplicationRequest.builder()
.applicationId("test-app-name")
.build())
.block()
ops.applications()
.start(StartApplicationRequest.builder()
.name("test-app-name").build())
.block();