cloud foundry_Cloud Foundry Java客户端–流事件
cloud foundry
Cloud Foundry Java客户端提供了基于Java的绑定,用于与正在运行的Cloud Foundry实例进行交互。 该项目的一件整洁的事情是,它已经接受了基于Reactive Stream的API的方法签名,特别是使用Reactor实现,这在使用流数据时特别有用。
在这篇文章中,我想展示一个真正使该库发光的特定用例–来自Cloud Foundry的流事件
Loggregator是Cloud Foundry中的子系统,负责汇总系统内产生的所有日志,并提供了将该信息流式传输到外部系统的方式。 Loggregator中的“流量控制器”组件公开了基于Websocket的端点,这些端点流出了这些事件,Cloud Foundry Java客户端抽象了基础的websocket客户端连接详细信息,并提供了一种使用此信息的简洁方法。
作为前提条件,您将需要一个正在运行的Cloud Foundry实例来试用该示例,并使它在本地运行的最佳方法是使用PCF Dev 。
假设您有一个正在运行的实例,使用cf-java-client库从代码连接到该实例的方式如下:
SpringCloudFoundryClient cfClient = SpringCloudFoundryClient.builder().host("api.local.pcfdev.io").username("admin").password("admin").skipSslValidation(true).build();
使用此方法,可以通过以下方式创建流量控制器的客户端:
DopplerClient dopplerClient = ReactorDopplerClient.builder().cloudFoundryClient(cfClient).build();
基本上就是这样,多普勒客户端提供了流式处理基础事件的方法,如果您对所有未过滤的信息(适当地称为firehose)感兴趣,则可以通过以下方式进行:
Flux<Event> cfEvents = this.dopplerClient.firehose(FirehoseRequest.builder().subscriptionId(UUID.randomUUID().toString()).build());
结果是来自Reactor库的Flux类型封装了流数据,可以通过附加订户来观察流数据,例如,对于订户的基本示例,只需将事件以以下方式记录到控制台即可:
cfEvents.subscribe(e -> LOGGER.info(e.toString()));
但是, Flux的真正功能在于它提供的非常强大的流利方法,因此,例如,如果我对诸如应用程序级别日志的子集感兴趣,那么我实质上想过滤数据,从中提取日志并通过以下方式打印日志:
cfEvents.filter(e -> LogMessage.class.isInstance(e)).map(e -> (LogMessage)e).map(LogMessage::getMessage).subscribe(LOGGER::info);
如果您想使用此示例(作为附加奖励已启用了Spring Boot) ,请在github存储库中使用它 。
翻译自: https://www.javacodegeeks.com/2016/05/cloud-foundry-java-client-streaming-events.html
cloud foundry
cloud foundry_Cloud Foundry Java客户端–流事件相关推荐
- Cloud Foundry Java客户端–流事件
Cloud Foundry Java客户端提供了基于Java的绑定,用于与正在运行的Cloud Foundry实例进行交互. 这个项目的优点之一是它采用了基于Reactive Stream的API作为 ...
- gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例
场景 gPRC简介以及Java中使用gPRC实现客户端与服务端通信(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/ ...
- java版gRPC实战之四:客户端流
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos <java版gRPC实战>全系列链接 用p ...
- Sentinel简介与使用(Java客户端)
一.Sentinel简介 官方中文文档:https://sentinelguard.io/zh-cn/docs/introduction.html github网址:https://github.co ...
- signalr for java_ASP.NET Core SignalR Java 客户端
ASP.NET Core SignalR Java 客户端ASP.NET Core SignalR Java client 11/12/2019 本文内容 Java 客户端允许 SignalR 从 j ...
- java 用流创建流_成为Java流大师–第1部分:创建流
java 用流创建流 在许多情况下,声明性代码(例如,具有Streams的功能组合)提供了出色的代码指标. 通过该动手实验文章系列进行编码,并成为Java Streams的主教练,从而成为一名更好的J ...
- sql 解析 java_将Java 8流解析为SQL
sql 解析 java 当Java 8发行并且人们开始流式处理各种东西时,不久之后他们就开始想象如果可以以相同的方式使用数据库将有多大的潜力. 本质上,关系数据库由以表状结构组织的巨大数据块组成. 这 ...
- 将Java 8流解析为SQL
当Java 8发行并且人们开始流式处理各种东西时,很快他们就开始想象如果可以以相同的方式使用数据库将有多大的潜力. 本质上,关系数据库由以表状结构组织的巨大数据块组成. 这些结构非常适合进行过滤和映射 ...
- Smack 4.3.2 发布,XMPP(jabber) 的 Java 客户端类库
开发四年只会写业务代码,分布式高并发都不会还做程序员? >>> Smack 4.3.2 发布了,Smack 是一个开源,易于使用的 XMPP(jabber) 的 Java 客户端 ...
最新文章
- Scala 与设计模式(一):Singleton 单例模式
- 页面动态显示程序执行结果-append
- Sqlite数据库中索引的使用、索引的优缺点
- 选购光端机有哪些必备条件
- Java黑皮书课后题第4章:*4.14(转换字母等级为数字)编写程序,提示用户输入一个字母等级A、B、C、D或者F,显示对应的数字值4、3、2、1或者0。对其它输入,提示非法等级
- android横向滑动选项卡,android – 如何使用可滑动选项卡实现PageTransformer
- SpringBoot2.0之六 多环境配置
- 官方版sublime Text3汉化和激活注册码
- 10.生命周期和Zend引擎
- C语言自学笔记(20)
- 无线WiFi怎样实现实名认证?
- 苹果拍照怎么显示地点和时间_2020年康复理疗师证报名时间怎么报考考试地点...
- 人月神话(七)没有银弹-软件工程中的根本和次要问题、20 年后的人月神话
- ASUS R556L华硕老笔记升级,换固态硬盘,鸟枪换炮记:买固态硬盘的纠结和艰辛的系统迁移(前后花了三天时间)
- 小米无线显示电脑连接到服务器,小米手机无线连接电脑_小米手机无线显示电脑...
- flex布局设置宽度不生效,高度生效
- M1 Mac使用photoshop液化、存储为web格式黑屏如何解决
- Web端H.265播放器研发解密 1
- Rufus,Etcher,黑苹果-最方便的启动盘制作工具
- java csv 复杂表头_java读csv 和excel
热门文章
- jzoj3301-[集训队互测2013]家族【并查集,暴力】
- nssl1167-桐人的约会【最短路】
- nssl1232-函数【数论,欧拉函数,莫比乌斯反演】
- jzoj1164-求和【欧拉函数,数论】(筛欧拉函数模板)
- POJ2352-Stars【树状数组】
- ssl2863-石子合并【dp练习】
- Codeforces Round #670 (Div. 2)
- K8S Learning(4)——Namespace
- 集合框架 Queue---BlockingQueue详解
- ConcurrentHashMap能完全替代HashTable吗?