cloud foundry_实际的Reactor操作–检索Cloud Foundry应用程序的详细信息
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应用程序的详细信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 香港警察备案流程(香港警察备案)
- 下一篇: 安卓6.0怎么样才可以升级到安卓7.0(