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

从两个通量生成通量

山疏珂
2023-03-14

我现在正在使用Flux。我想创建一个通量

描述问题:我有一个工作案例,我有一个房屋清单和我所在的清单。我需要返回所有房屋的结果,我只会更改结果对象上的真/假标志。当然,第二个列表的元素可能更少。

有人能提出这样或其他的建议吗?

@RunWith(SpringRunner.class)
@SpringBootTest

public class WholesaleControllerTest {

@Test
public void testZipFlux() {
    Flux<Flux1> flux1 = Flux.just(new Flux1(1, "test1"), new Flux1(2, "test2"), new Flux1(3, "test3"));
    flux1.subscribe(item -> System.out.println("Flux1 " + item));
    Flux<Flux2> flux2 = Flux.just(new Flux2(2, true), new Flux2(1, false), new Flux2(3, true));
    flux2.subscribe(item -> System.out.println("Flux2 " + item));


    Flux<Result> = ...//TODO zip flux1 and flux2 to RESULT

}

@Getter
@Setter
@AllArgsConstructor
class Flux1{
    private int id;
    private String value;
}

@Getter
@Setter
@AllArgsConstructor
class Flux2{
    private int id_fk_flux2;
    private boolean value;
}


@Getter
@Setter
@AllArgsConstructor
class Result{
    private int id;
    private String flux1Value;
    private boolean flux2Value;
}

}

共有1个答案

范峰
2023-03-14

这是一种方法。但我不得不说,这不是严格意义上的反应式编程(因为我在第一个流量上使用块来创建映射)。

话虽如此,我想不出其他办法

Map<Integer, Flux1> flux1Map = flux1.collectMap(Flux1::getId, Function.identity()).block();

Flux<Result> results = flux2.flatMap(item -> {
        //TODO : Handle cases like key not found in flux1
        Flux1 entry = flux1Map.get(item.getId_fk_flux2());
        Result result = new Result(entry.getId(), entry.getValue(), item.isValue());
        return Mono.just(result);
    }).collectList().flatMapMany(Flux::fromIterable);
 类似资料:
  • 我用平面图附加通量,但如果我添加其他平面图,则只返回最后一个平面图。 我需要在通量上处理每个Mono函数,但我似乎无法让每个函数正确执行和返回。

  • 我是Spring Reactive Project的新手。在我的Spring Boot Controller课程中

  • 我有一个应用程序捆绑文件,现在我想生成一个通用的APK,可以安装到所有设备。我曾尝试使用此命令生成通用APK: 非常感谢。

  • 这里有两个xsd定义,它们几乎90%相似。下面是第一个xsd的框架: 第二个xsd是: 现在,这两个XSD在两个不同的包中生成两组类。我正在使用JAXB来解组收到的XML。XML是从这两个XSD生成的。 在创建JAXB上下文时,它给我带来了错误,因为我相信大多数类都会导致冲突。 下面是错误跟踪: 如果有人能给我提出任何解决方案,那就太好了。 谢谢

  • 问题内容: 我需要在maven pom.xml文件中设置一个属性,该属性应该是UUID。谁能告诉我 将属性设置为UUID的最佳方法是什么? 我正在使用启动gigaspaces的配置文件,并且gigaspaces需要组名, 想要唯一(uuid)。因此,在我的个人资料中,我想设置一个groupName属性值 每次构建都应更改。我自己写了一个UUIDGenerator插件,因为没有找到任何插件。 因此,

  • 在这些条件下,请考虑以下代码: 生成通量 getOneResponePage(int)最终将返回一个空的通量 目标是有一个名为getAllResponses()的方法,该方法返回连续的流量 由于我是反应式编程的新手,我的想法对吗 IntelliJ警告我,不建议在非阻塞上下文中调用“subscribe”。如何正确操作 在我的实际代码中,使用发送请求。它连接到返回结果的服务。该服务每次调用最多只返回1