将复杂的业务逻辑应用于 Multi 对象和 return Rest 中的 Uni 对象 API
Apply complex business logic to Multi object and return a Uni object in Rest API
在 rest 函数中,我正在进行一个响应式 Postgres Db 调用,它是 returning 一个 Multi。我的意图是 运行 Multi 上的复杂业务逻辑和 return 新的 Uni。
@GET
public Uni<Object2> get() {
Multi<Object1> objects = DB.getAll(dbClient);
Uni<HashMap<String, FileTreeNode>> response; // Not sure how to initialize this object without any value
List<Object1> result = new ArrayList<>();
objects.subscribe().with(
object -> result.add(object),
failure -> System.out.println("Failed with " + failure),
() -> {
// Update Uni response object here.
});
return response;
}
任何人都可以告诉我如何创建 Uni 对象并在业务逻辑中将其标记为完成以便通知下游服务。
我已经回答了 Mutiny GitHub 项目。
您需要使用以下方法将物品收集到 Map
中:
Uni<Map<String, String>> uni =
multi.collect()
.asMap(item -> getUniqueKeyForItem(item));
如果需要更复杂的逻辑,可以提供自己的累加器:
Uni<MyCollection> uni = multi.collect()
.in(MyCollection::new, (col, item) -> col.add(item));
有关详细信息,请参阅 https://smallrye.io/smallrye-mutiny/guides/collecting-items。
在 rest 函数中,我正在进行一个响应式 Postgres Db 调用,它是 returning 一个 Multi。我的意图是 运行 Multi 上的复杂业务逻辑和 return 新的 Uni。
@GET
public Uni<Object2> get() {
Multi<Object1> objects = DB.getAll(dbClient);
Uni<HashMap<String, FileTreeNode>> response; // Not sure how to initialize this object without any value
List<Object1> result = new ArrayList<>();
objects.subscribe().with(
object -> result.add(object),
failure -> System.out.println("Failed with " + failure),
() -> {
// Update Uni response object here.
});
return response;
}
任何人都可以告诉我如何创建 Uni 对象并在业务逻辑中将其标记为完成以便通知下游服务。
我已经回答了 Mutiny GitHub 项目。
您需要使用以下方法将物品收集到 Map
中:
Uni<Map<String, String>> uni =
multi.collect()
.asMap(item -> getUniqueKeyForItem(item));
如果需要更复杂的逻辑,可以提供自己的累加器:
Uni<MyCollection> uni = multi.collect()
.in(MyCollection::new, (col, item) -> col.add(item));
有关详细信息,请参阅 https://smallrye.io/smallrye-mutiny/guides/collecting-items。