0
私は、機密性の高い支払い処理を実行するスプリングブートサービスに取り組んでおり、これらのトランザクションを中断することなくアプリケーションのシャットダウンを確実にしたいと考えています。春のブートでこれに最も近づく方法を知りたいスプリングブートグレイシャットシャットダウン中トランザクション
私は春ブートにシャットダウンフックを追加し、私はスレッドが処理を完了したかどうかを確認するために、クラスにCountDownLatch
を使用するかもしれないことを考えていた読ん
- このような何か:さ
@Service
public class PaymentService {
private CountDownLatch countDownLatch;
private void resetLatch() {
this.countDownLatch = new CountDownLatch(1);
}
public void processPayment() {
this.resetLatch();
// do multi-step processing
this.CountDownLatch.countDown();
}
public void shutdown() {
// blocks until latch is available
this.countDownLatch.await();
}
}
// ---
@SpringBootApplication
public class Application {
public static void main(String[] args) {
// init app and get context
ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
// retrieve bean needing special shutdown care
PaymentService paymentService = context.getBean(PaymentService.class);
Runtime.getRuntime().addShutdownHook(new Thread(paymentService::shutdown));
}
}
建設的なフィードバック大変感謝します - ありがとう。