Как сделать вызов метода Async, используя Джерси? - PullRequest
0 голосов
/ 12 ноября 2018

Я работаю над приложением dropwizard. У меня есть ресурс EmployeeResource, который запускает почтовый API.

@Path("/employee")
public class EmployeeResource {
    @GET
    @Path("/list")
    public void getEmployeeDetails(){
        //DAO call and other stuff

        mailClient.sendMail();
    }
}

Теперь метод sendMail извлечет некоторые детали из БД, а затем вызовет почтовый API. Я хочу, чтобы метод sendMail не блокировал запрос "/ employee / list". Есть ли способ сделать метод sendMail асинхронным?

Я посмотрел и нашел решения для создания асинхронного API, но я хочу, чтобы только мой метод sendMail был асинхронным. Как мне это решить?

Редактировать: я не использую Spring framework, просто использую Dropwizard framework.

1 Ответ

0 голосов
/ 12 ноября 2018

Чтобы выполнить асинхронное выполнение метода или любого блока кода, вы всегда можете создать новый поток, реализуя интерфейс Runnable.Для ваших требований, таких как:это здесь ):

private static final ExecutorService TASK_EXECUTOR = Executors.newCachedThreadPool();

Ваш код компонента метода отправки почты будет выглядеть так:

TASK_EXECUTOR.submit(new Runnable() {
            @Override
            public void run() {
                mailClient.sendMail();
            }
        });

...