Spring @Async ignorado
Estou tendo problemas ao invocar um método de forma assíncrona no Spring, quando o invocador é uma biblioteca incorporada que recebe notificações de um sistema externo. O código é exibido abaixo:
@Service
public class DefaultNotificationProcessor implements NotificationProcessor {
private NotificationClient client;
@Override
public void process(Notification notification) {
processAsync(notification);
}
@PostConstruct
public void startClient() {
client = new NotificationClient(this, clientPort);
client.start();
}
@PreDestroy
public void stopClient() {
client.stop();
}
@Async
private void processAsync(Notification notification) {
// Heavy processing
}
}
oNotificationClient
internamente possui um encadeamento no qual recebe notificações de outro sistema. Aceita umNotificationProcessor
em seu construtor, que é basicamente o objeto que fará o processamento real das notificações.
No código acima, forneci o Spring bean como processador e tentei processar a notificação de forma assíncrona usando@Async
anotação. No entanto, parece que a notificação é processada no mesmo encadeamento usado peloNotificationClient
. Efetivamente,@Async
é ignorado.
O que estou perdendo aqui?