Vorrei implementare l'invio di e-mail asincrone nella mia applicazione Web quando gli utenti si registrano per un nuovo account. Questo è così che se c'è un problema o un ritardo nell'invio del messaggio e-mail (ad esempio il server di posta è inattivo o la connessione di rete al server di posta è lenta) l'utente non sarà tenuto in attesa del completamento dell'invio.Elaborazione di e-mail asincrona nell'applicazione Web Java
La mia app Web è costruita utilizzando l'implementazione Spring e Hibernate di JPA.
Quale sarebbe il modo migliore e più affidabile per me per implementare l'elaborazione e-mail asincrona in questa applicazione Web?
Sto pensando di mantenere le informazioni di posta elettronica in una tabella di database che viene regolarmente sottoposta a polling da un lavoro programmato Quartz (http://www.opensymphony.com/quartz/) per gli aggiornamenti e quando trova nuove e-mail non inviate, tenta di inviarle.
È un modo ragionevole di implementare ciò che voglio?
Grazie.
Edit:
Il più votato risposta è quello di lasciare l'invio di posta come una chiamata sincrona, ma che cosa è innescato il mio pensiero che un approccio asincrono potrebbe essere migliore è che sto attualmente utilizzando GMail come la mia posta in uscita server (questo è per il testing durante lo sviluppo) e sto riscontrando un ritardo di 25 secondi nella risposta da quando la mia app tenta di inviare l'e-mail al momento in cui la chiamata alla funzione di invio della posta ritorna. Cosa ne pensi?
Il problema con questo approccio è che attualmente sto usando gmail come mio server di posta in uscita (questo è per il test) e sto riscontrando un ritardo di 25 secondi nella risposta da quando la mia app tenta di inviare l'e-mail quando la chiamata la funzione di invio della posta ritorna. Questo è ciò che mi ha fatto pensare che un approccio asincrono potrebbe essere il migliore. Cosa ne pensi? – JMM
@Denise Concordo con il bit asincrono. È possibile eseguire un thread in background nel Servlet Engine, che prende JavaMail "Messaggi" da un elenco o vettore e esegue l'elaborazione. –