失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > cloud foundry_Cloud Foundry Java客户端–流事件

cloud foundry_Cloud Foundry Java客户端–流事件

时间:2019-02-26 07:01:50

相关推荐

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存储库中使用它 。

翻译自: //05/cloud-foundry-java-client-streaming-events.html

cloud foundry

如果觉得《cloud foundry_Cloud Foundry Java客户端–流事件》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。