当前位置: 首页 > 知识库问答 >
问题:

如何用单声道的数据丰富Reactor的上下文?

林波鸿
2023-03-14

有可能在订阅时用以下一些数据丰富Reactor的序列上下文:

java prettyprint-override">Mono.just("Hello")
    .flatMap(s -> Mono.deferContextual(ctx -> Mono.just(s + " " + ctx.get(key)))) 
    .contextWrite(ctx -> ctx.put(key, "World")); 

然而,这里的World是一种在订阅时知道的静态数据。

我想从最初的Mono本身解析一个值,并将其放入上下文中,以便下游操作员可以通过上下文API访问它。

我怎样才能正确地做到这一点?

我正在研究的用例如下:

  • 我通过异步SDK从AWS接收到一条SQS消息,该消息被解析为Reactor的单声道
  • 一个消息有一个correlation_id在里面,我想提取它并把它放到Reactor上下文中,使它对所有下游操作员可见。

共有1个答案

鄂和璧
2023-03-14

目前,用我找到的最初Mono中的数据来丰富Reactor上下文的唯一选择是用Mono将所有处理打包成flatMap。延迟上下文()。。。contextWrite()内部如下所示:

Mono.just("test")
        .flatMap(s ->
                Mono.deferContextual(ctx -> {
                    System.out.println("key1=" + ctx.getOrEmpty("key")); // Context in place
                    return Mono.just(s);
                }).contextWrite(ctx -> ctx.put("key", s)))
        .flatMap(s -> Mono.deferContextual(ctx -> {
            System.out.println("key2=" + ctx.getOrEmpty("key")); // No Context
            return Mono.just(s);
        }));

我希望有人能提出更好的解决方案。

 类似资料:
  • 数据丰富是指用于增强,改进和改进原始数据的一系列过程。 它指的是有用的数据转换(原始数据到有用信息)。 数据丰富过程的重点是使数据成为现代企业或企业的宝贵数据资产。 最常见的数据丰富过程包括通过使用特定的决策算法来纠正数据库中的拼写错误或印刷错误。 数据丰富工具为简单数据表添加有用信息。 考虑以下代码进行单词拼写纠正 - import re from collections import Coun

  • 我正在用Flink做一个实时项目,我需要用以前的交易丰富每一张卡的状态,以计算如下的交易特性: 对于每一张卡,我都有一个功能,可以统计过去24小时内的交易次数。另一方面,我有两个数据源: 在Flink流中使用静态数据集丰富数据流 任何帮助都是非常感激的。

  • 我注意到使用Reactor时的一些奇怪行为。场景是这样的: 调用rest APIendpoint,获取一个值,封装在Mono中 使用上述值调用另一个rest APIendpoint,检索另一个值,用Mono封装 压缩这两个结果 出现的情况是,onSubscribe(FluxMap.MapSubscriber)在第一个API调用中被调用两次,然后打开两个连接并生成两个结果。传递给第二个API调用的结

  • 要表现色彩里的浓烈、富足感可藉由组合一个有力的色彩和它暗下来的补色。例如,深白兰地酒红色就是在红色中加了黑色,就像产自法国葡萄园里陈年纯美的葡萄酒,象征财富。白兰地酒红色和深森林绿如果和金色一起使用可表现富裕。这些深色、华丽的色彩用在各式各样的织料上,如皮革和波纹皱丝等等,可创造出戏剧性、难以忘怀的效果。这些色彩会给人一种财富和地位的感觉。 补色色彩组合 原色色彩组合 单色色彩组合 49 3 49

  • 2.2.3.丰富的特性 Linux 系统本身就具有很多实用的特性。 Android 从中受益良多,例如内存管理、电源管理和网络部分。

  • 我正在尝试创建以下链: 因此,我需要得到5。但是在执行1,2和3之前,4。 代码运行正常,但我想退出 从