小编Bog*_*lga的帖子

Java流是连续阶段的吗?

我对中间阶段的顺序的状态的问题-从施加到一个阶段的操作的所有输入流(项目)是所有级/操作施加到各流项目?

我知道这个问题可能不容易理解,所以我举一个例子.在以下流处理中:

List<String> strings = Arrays.asList("Are Java streams intermediate stages sequential?".split(" "));
strings.stream()
           .filter(word -> word.length() > 4)
           .peek(word -> System.out.println("f: " + word))
           .map(word -> word.length())
           .peek(length -> System.out.println("m: " + length))
           .forEach(length -> System.out.println("-> " + length + "\n"));
Run Code Online (Sandbox Code Playgroud)

我对这段代码的期望是它会输出:

f: streams
f: intermediate
f: stages
f: sequential?

m: 7
m: 12
m: 6
m: 11

-> 7
-> 12
-> 6
-> 11
Run Code Online (Sandbox Code Playgroud)

相反,输出是:

f: streams
m: 7
-> 7

f: intermediate
m: …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8 java-stream

14
推荐指数
1
解决办法
1768
查看次数

传输 FHIR 资源的 RSocket 与 HTTP 性能

我最近开始了一系列关于使用FHIR资源的服务到服务通信的性能调查,以确定在以下方面花费的处理时间:

  1. 有效载荷通信/交换
  2. 序列化和反序列化有效负载

在调查过程中遇到了两个我不明白的结果,因此我需要RSocket开发团队的帮助。我将详细说明结果和问题。

为了找出最快的通信方式,我分析了使用两种传输协议的三种传输方式——HTTP 和 RSocket。更准确地说 - 我已经分析和基准测试:

  1. 使用HAPI REST 服务器和 HAPI FHIR 客户端交换 FHIR 资源
  2. 通过@RestController使用RestTemplateWeb 客户端访问 Spring端点,使用 REST 通信交换字符串(序列化的 FHIR 资源)
  3. 使用RSocket消息交换 FHIR 资源

对前两种通信方法的分析产生了使用 HAPI REST 服务器交换 FHIR 资源与交换(原始)字符串有效载荷之间的巨大差异,包括将这些有效载荷反序列化为 FHIR 资源。更准确地说 - 对于大型 FHIR 资源,HAPI REST 服务器增加的开销大约是(原始)字符串通信和反序列化所带来的开销的 3-4 倍。

关于两个服务之间的 RSocket 通信 - 我尝试使用两种模式来交换 FHIR 资源:

  1. 作为原始字符串,从 FHIR 资源序列化
  2. 作为原始 FHIR 资源,让 RSocket 处理序列化和反序列化

第一种方法(使用原始字符串)产生的负载交换开销几乎与 HTTP(使用 REST)通信所产生的开销相似。更准确地说 - 通信开销比 HTTP 通信高几个百分比 (5-10%)。这让我感到惊讶,因为我认为 RSocket 通信开销将低于 HTTP …

hl7-fhir spring-boot spring-messaging hapi-fhir rsocket

-3
推荐指数
1
解决办法
759
查看次数