まず第一に、私は非同期処理の分野にかなり慣れていません。私の現在のプロジェクトでは、Spring Boot をプロジェクト リアクター (具体的には 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
}
これまでは、accept メソッドの戻り値の型が void で問題ありませんでした。しかし、現在、プロセッサメソッドから応答を返したいシナリオがあります。または、処理中にエラーが発生した場合は適切な例外をスローする必要があり、いずれの場合も、応答/例外をポイントに戻す必要があります。呼び出し。
これはリアクターを使用して行うことができますか? はいの場合、これの簡単な例を教えてください。Promise について読んだことがありますが、私のケースに似た例が見つかりません。