实际的Reactor操作–检索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返回一个反应堆“ 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351647.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql生成app接口_Java实现app接口和Socket消息传递(10)java连接MySQL实现App登录接口...

原创&#xff1a;http://blog.csdn.net/iwanghang1.先来个Androiod端口的GIF效果图App图标大家可能没看清&#xff0c;这个是AndroidStudio3.0最新的默认App图标哦~~2.不要忘记把MySQL的jar导进来jar包放入的位置在这里&#xff1a;D:\eclipse-workspace\.metadata\.plugins\or…

centos yum安装nginx 提示 No package nginx available问题解决方法

问题原因&#xff1a; nginx位于第三方的yum源里面&#xff0c;而不在centos官方yum源里面 解决方法&#xff1a; 安装epel(Extra Packages for Enterprise Linux) a、去epel网站 http://fedoraproject.org/wiki/EPEL下载 b、我的系统是centos5.7&#xff0c;cpu是x86_64&#…

链接生成二维码图片

https://packagist.org/packages/houdunwang/qrcode转载于:https://www.cnblogs.com/pansidong/p/10247663.html

mysql pxc测试_Mysql同步机制 - PXC 压力测试 tpcc安装及使用

tpcc是针对mysql单机制定的测试标准&#xff0c;这个标准对于pxc集群来说要求太高&#xff0c;所有后面即使有些项目没有通过也不必太过在意&#xff0c;主要是压一下事务处理能力。Mysql单机虽然写入速度快&#xff0c;但相比于Mysql集群&#xff0c;单机能承受的并发能力远比…

RHEL(Red Hat Enterprise Linux)配置YUM源

前言 YUM&#xff08;全称为 Yellow dog Updater, Modified&#xff09;是一个在Fedora中的Shell前端软件包管理器。基于RPM包管理&#xff0c;能够从指定的服务器自动下载RPM包并且安装&#xff0c;可以自动处理依赖性关系&#xff0c;并且一次安装所有依赖的软体包&#xff…

java中集合判空_Java中的类型安全的空集合

java中集合判空我以前曾在Java Collections类的实用程序上进行过博客撰写&#xff0c;并且特别地在使用Usings Collections Methods上的博客emptyList&#xff08;&#xff09;&#xff0c;emptyMap&#xff08;&#xff09;和emptySet&#xff08;&#xff09;上进行了博客撰写…

cnn验证码识别代码_中文项目:快速识别验证码,CNN也能为爬虫保驾护航

原标题&#xff1a;中文项目&#xff1a;快速识别验证码&#xff0c;CNN也能为爬虫保驾护航机器之心专栏作者&#xff1a;Nick Li随着卷积网络的推广&#xff0c;现在有各种各样的快捷应用&#xff0c;例如识别验证码和数学公式等。本文介绍了一个便捷的验证码识别项目&#xf…

CentOS yum 源的配置与使用

一、yum 简介 yum&#xff0c;是Yellow dog Updater, Modified 的简称&#xff0c;是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器。起初是由yellow dog 这一发行版的开发者Terra Soft 研发&#xff0c;用python 写成&#xff0c;那时还叫做yup(yellow dog updat…

使用ActiveMQ Artemis在两个WildFly服务器之间构建水平JMS桥

有时有必要将不同的Message Broker连接在一起。 在企业消息传递中&#xff0c;此方案称为桥接。 可以使用JMS和其他协议&#xff08;例如AMQP&#xff0c;ActiveMQ Artemis核心协议&#xff09;来完成。 该博客文章重点介绍在WildFly中运行的JMS与两个Apache ActiveMQ Artemis …

mysql 逻辑备份 物理备份_数据库的逻辑备份和物理备份--非RMAN

数据库的逻辑备份和物理备份--非RMAN,不用借助其他工具&#xff0c;只要归档日志和物理备份就可以实现的备份数据库的备份和恢复常规而且重要&#xff0c;恢复得到理想状态逻辑备份利用EXP备份&#xff0c;从数据库提取写入操作系统文件1.可以导出一个完整的数据库2.也可以导出…

如何在myeclipse中导入jar包?

右键项目名--->Build Path—>Configure Build Path... 会弹出来一个框 在那四个选项选择 Libraries 然后再选择 右边 第二个选项Add External Jars... 然后就是你JAR的路径。一般将导入的外部包放在lib目录下。

python入门if语句练习_python入门视频:09 if语句_练习.mp4

本视频课程目录如下&#xff1a;python6天学习基础课程 ├─01天│ python入门视频&#xff1a;01 计算机组成-硬件设备.mp4│ python入门视频&#xff1a;02 计算机组成-软件设备.mp4│ python入门视频&#xff1a;03 程序的执行流程和小结_.mp4│ pyt…

spring依赖日志_Spring:设置日志记录依赖项

spring依赖日志这篇文章描述了如何在Spring中设置日志依赖。 它基于Dave Syer的帖子中提供的信息 。 这里提供有关Java日志记录框架的提醒。 该代码示例可在GitHub的Spring-Logging-Dependencies目录中找到。 Spring使用Jakarta Commons Logging API&#xff08;JCL&#xff0…

网页UTF8转换GBK后出现问号?的原因

网页UTF8转换GBK后出现问号"?"的原因 网页编码转换是进行网页解析和处理的第一步。 互联网上越来越多的网页采用UTF-8编码&#xff0c;UTF-8用1到6个字节编码UNICODE字符&#xff0c;收录了超过10万个字符&#xff0c;BMP部分也有六万多个字符 而在进行编码转换时&…

关于 Number() parsint() abs() 的区别

1. parseInt(‘’) parseInt() 函数可解析一个字符串&#xff0c;并返回一个整数。 如果第一个字符不是数字或者负号&#xff0c;parseInt() 就会返回NaN 2.Number() 函数把对象的值转换为数字 3. Math.abs(x) 取得正数和负数的绝对值 转载于:https://www.cnblogs.com/…

python怎么安装pymysql_Python 安装pyMySQL过程记录

如果你的系统不支持 pip 命令&#xff0c;可以使用以下方式安装&#xff1a;1、使用 git 命令下载安装包安装(你也可以手动下载)&#xff1a;$ git clone https://github.com/PyMySQL/PyMySQL$ cd PyMySQL/$ python3 setup.py install2、如果需要制定版本号&#xff0c;可以使用…

C++中的单例模式

单例模式也称为单件模式、单子模式&#xff0c;可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点&#xff0c;该实例被所有程序模块共享。有很多地方需要这样的功能模块&#xff0c;如系统的日志输出&#xff0c;GUI应用必…

Spring Boot 学习笔记(三)Spring boot 中的SSM

Spring boot 下的 Spring mvc Controller&#xff1a;即为Spring mvc的注解&#xff0c;处理http请求&#xff1b; RestController&#xff1a;Spring4后新增注解&#xff0c;是Controller与ResponseBody的组合注解&#xff0c;用于返回字符串或json数据&#xff1b; package c…

c mysql日期时间格式_mysql日期和时间类型

TIME 类型TIME 类型用于只需要时间信息的值&#xff0c;在存储时需要 3 个字节。格式为 HH:MM:SS。HH 表示小时&#xff0c;MM 表示分钟&#xff0c;SS 表示秒。TIME 类型的取值范围为 -838&#xff1a;59&#xff1a;59&#xff5e;838&#xff1a;59&#xff1a;59&#xff0…

MySQL问题汇总

1.#include <mysql.h>编译出错 在阅读TrinityCore时&#xff0c;发现了解决方法和解释&#xff1a; #ifdef _WIN32 // hack for broken mysql.h not including the correct winsock header for SOCKET definition, fixed in 5.7 #include <winsock2.h> #endif #inc…