【发布时间】:2021-06-11 20:01:02
【问题描述】:
我正在尝试做类似的事情
Optional<Order> orderDetails = orderRepository.findById(orderId);
if (orderDetails.isEmpty())
throw new OrderNotFoundException("Order not found!");
Optional<User> UserDetails = userRepository.findById(userId);
if (UserDetails.isEmpty())
throw new UserNotFoundException("User not found!");
List<OrderItem> ItemDetailsList = orderItemRepository.findByOrderIdOrderByItemIdAsc(orderId);
我想以非阻塞方式一起调用这三个服务方法,但如果其中任何一个调用失败并且不继续进行,我想抛出错误。 如果以上都可行,则执行后面的逻辑。
我正在考虑使用allOff(),然后在 Futures 上使用 get 并在 Optional 为空时执行上述抛出错误的逻辑?
有没有更好的方法呢? 即如果其中一个失败而其他仍在运行,则抛出错误并中止其他正在运行的任务。
【问题讨论】:
-
This answer 可能会提供您正在寻找的内容。
-
如果回答了您的问题,您可以将答案标记为已接受。
标签: java multithreading parallel-processing future completable-future