Tôi đang gặp khó khăn trong việc tìm hiểu làm thế nào để kiến trúc phần cuối cùng của hệ thống của tôi. Hiện tại tôi đang chạy một máy chủ Tomcat có một servlet đáp ứng các yêu cầu của máy khách. Mỗi yêu cầu lần lượt thêm một thông báo xử lý vào một hàng đợi không đồng bộ (có thể tôi sẽ sử dụng JMS thông qua Spring hoặc nhiều khả năng là SQS của Amazon).Whats cách tốt nhất để xử lý hàng đợi không đồng bộ liên tục trong Java là gì?
Chuỗi sự kiện là:
Sending phụ:
1. Hãy yêu cầu khách hàng
2. Thêm một số dữ liệu vào một DB liên quan đến yêu cầu này với một ID duy nhất
3. Thêm một đối tượng nhắn đại diện cho yêu cầu này vào hàng đợi thông điệp
Tiếp nhận phụ:
1. Kéo một đối tượng tin nhắn mới từ hàng đợi
2. Unwrap đối tượng và lấy một số thông tin từ một trang web dựa trên thông tin chứa trong đối tượng msg.
3. Gửi cảnh báo qua email
4. cập nhật hàng DB của tôi (cùng một ID duy nhất) với thông tin hoạt động đã được hoàn thành cho yêu cầu này.
Tôi đang gặp khó khăn trong việc tìm cách xử lý đúng cách mặt nhận. Một mặt tôi có thể tạo một chương trình java đơn giản mà tôi khởi động từ dòng lệnh chọn từng mục trong hàng đợi và xử lý nó. Có an toàn không? Liệu nó có ý nghĩa hơn khi có chương trình chạy như một luồng khác bên trong thùng chứa Tomcat không? Tôi sẽ không muốn làm điều này một cách trung thực, có nghĩa là đầu nhận sẽ có thể xử lý nhiều đối tượng cùng một lúc - sử dụng nhiều luồng. Tôi muốn điều này luôn luôn chạy, 24 giờ một ngày.
Một số tùy chọn để xây dựng mặt tiếp nhận là gì?
Trong trường hợp ai đó quan tâm đến những gì cuối cùng tôi đã làm. Tôi đã sử dụng SQS của Amazon và có một máy khách java (sử dụng khung công tác Spring) để thăm dò hàng đợi. Khi nó tìm thấy một msg nó xử lý nó và trở lại trạng thái chờ. Tôi có thể thêm Quartz luồng, bây giờ tôi chỉ cần khởi động nhiều quy trình. – Ish
Tôi đang đối mặt với một vấn đề tương tự. Tôi muốn biết Java Client đã được triển khai như thế nào. Tôi hy vọng nó không chạy trong một vòng lặp vô hạn trong khi và hồ bơi cho tin nhắn? –