如何结合Mono和Flux作为参数来创建新的Mono?
我的REST控制器方法应该返回Mono,Mono必须由两个并行请求构建到另一个web服务,并处理它们的响应,其中一个请求返回Mono,另一个请求返回flow 如何将Mono和Flux的响应结合起来并进行处理 型号: 控制器: 显然,控制器是错误的,因为: 1 Mono.zip接受2个或更多的Mono,其中我有Mono和Flux-如何组合它们? 2也不确定是否:students.forEachstudent->classModel.addStudentIdstudent.getId;对吗 有什么建议吗 您可以将方法更改为返回Mono 您可以在Flux上使用collectList,它将返回Mono,然后在addStudents中将学生对象转换为id如何结合Mono和Flux作为参数来创建新的Mono?,mono,flux,project-reactor,Mono,Flux,Project Reactor,我的REST控制器方法应该返回Mono,Mono必须由两个并行请求构建到另一个web服务,并处理它们的响应,其中一个请求返回Mono,另一个请求返回flow 如何将Mono和Flux的响应结合起来并进行处理 型号: 控制器: 显然,控制器是错误的,因为: 1 Mono.zip接受2个或更多的Mono,其中我有Mono和Flux-如何组合它们? 2也不确定是否:students.forEachstudent->classModel.addStudentIdstudent.getId;对吗 有什么建
public Mono<ClassModel> addRandomClassFull() {
return Mono.zip(
reactiveNetClient.addRandomTeacher(),
reactiveNetClient.addRandomStudents(10).collectList(),
(teacher, students) -> {
ClassModel classModel = new ClassModel();
classModel.setRoomNr("24B");
classModel.setClassName(faker.educator().course());
classModel.setTeacherId(teacher.getId());
classModel.addStudents(students);
return classModel;
}).flatMap(classRepository::save);
}
public Mono<ClassModel> addRandomClassFull() {
return Mono.zip(
//request teacher microservice and return Mono - single teacher
reactiveNetClient.addRandomTeacher(),
//request students microservice and return Flux - list of students
reactiveNetClient.addRandomStudents(10),
(teacher, students) -> {
ClassModel classModel = new ClassModel();
classModel.setRoomNr("24B");
classModel.setClassName(faker.educator().course());
classModel.setTeacherId(teacher.getId());
students.forEach(student -> classModel.addStudentId(student.getId());
return classModel;
}).flatMap(classRepository::save);
}
public Mono<ClassModel> addRandomClassFull() {
return Mono.zip(
reactiveNetClient.addRandomTeacher(),
reactiveNetClient.addRandomStudents(10).collectList(),
(teacher, students) -> {
ClassModel classModel = new ClassModel();
classModel.setRoomNr("24B");
classModel.setClassName(faker.educator().course());
classModel.setTeacherId(teacher.getId());
classModel.addStudents(students);
return classModel;
}).flatMap(classRepository::save);
}