cloud foundry

CF-Java-Client是一个库,可通过程序访问Cloud Foundry Cloud Controller API 。 它建立在Project Reactor之上,它是Reactive Streams规范的实现,并且使用此库在Cloud Foundry环境中做一些实际的事情是一个有趣的练习。

考虑一个示例用例–给定一个应用程序ID,我需要找到该应用程序的更多详细信息,该应用程序的更多详细信息以及组织和它所属的空间的详细信息。

首先,使用cf-java-client进行所有API操作的基础是一种毫不奇怪的类型,称为CloudFoundryClient(org.cloudfoundry.client.CloudFoundryClient), cf-java-client的github页面上包含有关如何获取实例的详细信息。这种类型的。

给定一个CloudFoundryClient实例,可以通过以下方式获取给定ID的应用程序的详细信息:

Mono<GetApplicationResponse> applicationResponseMono = this.cloudFoundryClient.applicationsV2().get(GetApplicationRequest.builder().applicationId(applicationId).build());

请注意,API返回一个React堆“ Mono”类型,这通常是cf-java-client的所有API调用的行为。

  • 如果API返回一个项目,则通常返回Mono类型
  • 如果期望API返回多个项目,则返回Flux类型,并且
  • 如果仅出于副作用而调用API –说打印一些信息,则它将返回Mono <Void>类型

下一步是从响应中检索空间标识符,并进行API调用以检索空间的详细信息,如下所示:

Mono<Tuple2<GetApplicationResponse, GetSpaceResponse>> appAndSpaceMono = applicationResponseMono.and(appResponse -> this.cloudFoundryClient.spaces().get(GetSpaceRequest.builder().spaceId(appResponse.getEntity().getSpaceId()).build()));

在这里,我使用“ and”运算符将应用程序响应与另一个返回空间信息的Mono组合在一起,结果是一个“ Tuple2”类型,它同时包含两条信息:应用程序详细信息和所处空间的详细信息在。

最后,获取要在其中部署应用程序的组织:

Mono<Tuple3<GetApplicationResponse, GetSpaceResponse, GetOrganizationResponse>> t3 =appAndSpaceMono.then(tup2 -> this.cloudFoundryClient.organizations().get(GetOrganizationRequest.builder().organizationId(tup2.getT2().getEntity().getOrganizationId()).build()).map(orgResp -> Tuples.of(tup2.getT1(), tup2.getT2(),orgResp)));

在这里, “ then”操作用于检索上一步中给定ID的组织详细信息,并将结果添加到先前的元组中,以创建包含“应用程序详细信息”,“空间详细信息”和“组织详细信息”的Tuple3类型”。 “ then”等同于Scala和ReactiveX世界中熟悉的flatMap运算符。

这基本上涵盖了您通常处理“ cf-java-client”库并利用它建立在出色的“ Reactor”库及其非常有用的运算符的集合上的事实,从而得出结果的事实。 只是为了将结果转换为与您的域更相关的类型的最后一步,并在处理过程中遇到任何错误:

Mono<AppDetail> appDetail =  t3.map(tup3 -> {String appName = tup3.getT1().getEntity().getName();String spaceName = tup3.getT2().getEntity().getName();String orgName = tup3.getT3().getEntity().getName();return new AppDetail(appName, orgName, spaceName);}).otherwiseReturn(new AppDetail("", "", ""));

如果您有兴趣尝试一个工作示例,请在我的github存储库中找到一个示例– https://github.com/bijukunjummen/boot-firehose-to-syslog

文章中显示的代码可在此处获得 – https://github.com/bijukunjummen/boot-firehose-to-syslog/blob/master/src/main/java/io.pivotal.cf.nozzle/service/CfAppDetailsS​​ervice .java

翻译自: https://www.javacodegeeks.com/2016/12/practical-reactor-operations-retrieve-details-cloud-foundry-application.html

cloud foundry

cloud foundry_实际的Reactor操作–检索Cloud Foundry应用程序的详细信息相关推荐

  1. 实际的Reactor操作–检索Cloud Foundry应用程序的详细信息

    CF-Java-Client是一个库,可通过程序访问Cloud Foundry Cloud Controller API . 它建立在Project Reactor之上,它是Reactive Stre ...

  2. cloud foundry_将Spring Boot应用程序绑定到Cloud Foundry中的服务的方法

    cloud foundry 如果要试用Cloud Foundry ,最简单的方法是下载出色的PCF开发人员或在Pivotal Web Services站点上创建试用帐户. 其余文章假定您已经安装了Cl ...

  3. cloud foundry_介绍“又一个” Cloud Foundry Gradle插件

    cloud foundry 在与两个同事(感谢Mark Alston和Dave Malone !)一起使用自动Jenkins管道部署Cloud Foundry应用程序的过程中,我决定尝试编写Gradl ...

  4. cloud foundry_使用“另类” Cloud Foundry Gradle插件无需停机

    cloud foundry 我一直在尝试编写用于将应用程序部署到Cloud Foundry的gradle插件 ,并在上一篇文章中写了有关此插件的文章 . 现在,我通过使用两种方法支持将无停机时间部署到 ...

  5. eureka集群只注册一个_Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇

    Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇 本文主要内容: 1:spring cloud整合Eureka总结 本文是由凯哥(凯哥Java:kagejava ...

  6. Spring Cloud的基本认识和使用Spring Cloud的基本教程

    认识Spring Cloud Spring Cloud简单来说就是一个微服务相关的框架,至于什么是微服务,简单来说就是一个整体项目由多个单独运行的小项目构成,每个小项目负责一个或多个功能,每个小项目有 ...

  7. Spring Cloud的基本认识和使用Spring Cloud的基本教程(山东数漫江湖)

    认识Spring Cloud Spring Cloud简单来说就是一个微服务相关的框架,至于什么是微服务,简单来说就是一个整体项目由多个单独运行的小项目构成,每个小项目负责一个或多个功能,每个小项目有 ...

  8. 到底什么是云原生(Cloud Native)?什么是CNCF(Cloud Native Computing Foundation)

    文章目录 到底什么是云原生(Cloud Native)?什么是CNCF(Cloud Native Computing Foundation) 一.云原生(Cloud Native) 1. 什么是云原生 ...

  9. 【Spring Cloud Alibaba 实战 | 总结篇】Spring Cloud Gateway + Spring Security OAuth2 + JWT 实现微服务统一认证授权和鉴权

    一. 前言 hi,大家好~ 好久没更文了,期间主要致力于项目的功能升级和问题修复中,经过一年时间这里只贴出关键部分代码的打磨,[有来]终于迎来v2.0版本,相较于v1.x版本主要完善了OAuth2认证 ...

最新文章

  1. 【刷算法】判断链表是否有环以及返回入环节点
  2. ImageView和onTouchListener实现,点击查看图片细节
  3. MVC3 Razor 视图引擎的基础语法
  4. 矩阵乘法如何去逆矩阵_矩阵乘法和求逆
  5. hbuilder制作简单网页_企业信息化网站+营销服务之电子商务网站制作流程
  6. 将一个存放了若干个对象的数组按照对象的某个属性值进行分组
  7. 如何设计实时数据平台(技术篇)
  8. html表单电子邮件验证验证,详解JavaScript表单验证(E-mail 验证)
  9. C++ 定义复数的加减乘除基本运算
  10. 微软认知服务应用秘籍 – 支持跨平台客户端的视觉服务中间层
  11. 【AppStore排行榜游戏安利】目录
  12. mysql 1032 update_解决mysql 1032 主从错误
  13. 我的 Typora IDEA 雅黑主题
  14. [渝粤教育] 西安交通大学 环境工程设计与管理 参考 资料
  15. matlab 模拟风,【Matlab实现】风场仿真
  16. SII-Slave Information Interface
  17. npm 安装报错 rollbackFailedOptional verb npm-session 解决办法
  18. python英文字符串单词个数统计_Python实现统计英文单词个数及字符串分割代码
  19. 列表中的导航菜单的制作
  20. 漫谈程序员系列:无BUG不生活

热门文章

  1. [2.7]【CF933A】A Twisty Movement【CF926B】Add Points【CF917A】The Monster【CF919E】Congruence Equation
  2. 洛谷P3607:Subsequence Reversal P(区间dp)
  3. 分羊(区间dp:分治与决策单调性优化)
  4. P7726-天体探测仪(Astral Detector)【构造】
  5. P6088-[JSOI2015]字符串树【可持久化Trie,LCA】
  6. P4867-Gty的二逼妹子序列【平衡结合,莫队,分块】
  7. P5431-[模板]乘法逆元2【递推】
  8. POJ2524——宗教(Ubiquitous Religions)【图论,并查集】
  9. 【动态规划】分组背包 (ssl 2291)
  10. 博客文章列表(一)——JAVA