Giriş
Açıklaması şöyleThere is a similar annotation available in EJB. A method annotated with this annotation is supposed to run asynchronously. Unfortunately, however, the EJB one is a bit out of date.
Also, in EJB, we can't specify the thread pool. It used to use the app server's default thread pool. Now the new annotation jakarta.enterprise.concurrent.Asynchronous comes with Jakarta EE Concurrency 3.0, which doesn't require using EJB, and we can specify the thread pool. It can be used with any CDI bean. Each asynchronous method execution corresponds to a managed java.util.concurrent.CompletableFuture instance that is backed by jakarta.enterprise.concurrent.ManagedExecutorService as its default asynchronous execution facility.
executor Alanı
ÖrnekŞöyle yaparız
import jakarta.enterprise.concurrent.Asynchronous;import jakarta.enterprise.context.ApplicationScoped;import jakarta.inject.Named;import java.util.concurrent.CompletableFuture;import java.util.concurrent.CompletionException;@Named@ApplicationScopedpublic class PaymentService {@Asynchronous(executor = "java:app/concurrent/MyExecutorService")public CompletableFuture<Confirmation> processPayment(final Order order) {try {var status = processOrder(order);return CompletableFuture.completedFuture(status);} catch (PaymentException ex) {throw new CompletionException(ex);}}private Confirmation processOrder(Order order) {return new Confirmation();}}
Hiç yorum yok:
Yorum Gönder