首先,我对异步处理领域很陌生。在我当前的项目中,我们使用 spring boot 和项目反应器,特别是 Eventbus,来做一些异步处理。我想使用 eventbus 也会使我们的系统更具可扩展性。
到目前为止,EventBus 的使用非常有限,我们在 EventBus 消费者中进行一些处理,但不返回任何内容。配置和示例处理器如下:
//配置文件
@SpringBootApplication
public class Application implements CommandLineRunner {
@Autowired
private EventBus eventBus;
@Autowired
private BatchProcessor batchProcessor;
@Override
public void run(String... arg0) throws Exception {
eventBus.on("batchProcessor", batchProcessor);
}
}
//消费者
@Service
public class BatchProcesspr implements Consumer<Event<Request>> {
@Override
public void accept(Event<Request> event) {
// processing goes here
}
到目前为止,这对于具有 void 返回类型的接受方法来说还不错。但是,现在我有一个场景,我想从处理器方法返回响应,或者如果在处理时发生错误需要抛出适当的异常,并且在任何一种情况下,都需要将响应/异常返回到调用。
这可以使用反应器完成吗?如果是,请为此提供一个简单的示例。我已阅读有关 Promise 的信息,但找不到与我的案例类似的示例。