Tôi muốn triển khai gửi email không đồng bộ trong ứng dụng web của mình khi người dùng đăng ký tài khoản mới. Điều này là để nếu có sự cố hoặc chậm trễ trong việc gửi thư email (ví dụ: máy chủ thư bị hỏng hoặc kết nối mạng đến máy chủ thư chậm), người dùng sẽ không được chờ đợi để gửi xong.Xử lý email không đồng bộ trong ứng dụng web Java
Ứng dụng web của tôi được tạo bằng cách sử dụng triển khai JPA của Spring và Hibernate.
Cách tốt nhất và đáng tin cậy nhất để tôi triển khai xử lý email không đồng bộ trong ứng dụng web này là gì?
Tôi đang suy nghĩ về việc lưu giữ thông tin email trong bảng cơ sở dữ liệu, sau đó thường xuyên được hỏi bởi một công việc được lập lịch biểu và khi tìm thấy email chưa gửi mới, nó cố gắng gửi chúng.
Đây có phải là cách hợp lý để triển khai những gì tôi muốn không?
Cảm ơn.
Edit:
Các bình chọn nhất trên phản ứng là để lại việc gửi mail như một cuộc gọi đồng bộ nhưng những gì đang gây ra suy nghĩ của tôi rằng một cách tiếp cận không đồng bộ có thể là tốt nhất là tôi đang sử dụng Gmail như mail gửi đi của tôi máy chủ (đây là để thử nghiệm trong khi phát triển) và tôi đang trải qua một sự chậm trễ 25 giây trong phản ứng từ khi ứng dụng của tôi cố gắng gửi email đến khi cuộc gọi đến chức năng gửi thư trả về. Bạn nghĩ sao?
Vấn đề với cách tiếp cận này là tôi hiện đang sử dụng gmail làm máy chủ thư đi của tôi (đây là để thử nghiệm) và tôi gặp phải sự chậm trễ 25 giây khi ứng dụng của tôi cố gắng gửi email đến khi cuộc gọi đến chức năng gửi thư trả về. Đây là những gì đã kích hoạt suy nghĩ của tôi rằng một cách tiếp cận không đồng bộ có thể là tốt nhất. Bạn nghĩ sao? – JMM
@Denise Tôi đồng ý với bit không đồng bộ. Bạn có thể chạy một luồng nền trong Servlet Engine của bạn, điều này sẽ đưa JavaMail "Messages" ra khỏi danh sách hoặc vectơ và thực hiện quá trình xử lý. –