Thử lại
Glasswall Halo bao gồm nhiều dịch vụ giao tiếp bằng các thông điệp bất đồng bộ thay vì HTTP. Đối với các dịch vụ này, chúng tôi đã cân nhắc cách nền tảng xử lý lỗi trong trường hợp xảy ra lỗi khi xử lý một thông điệp.
API đồng bộ và API bất đồng bộ
Các API đăng ký vào các hàng đợi phản hồi từ Glasswall Engine, tuy nhiên trong trường hợp xảy ra lỗi, một phản hồi lỗi sẽ được trả về cho http client.
Dịch vụ engine
Kiến trúc sử dụng mô hình request/response với các hàng đợi reply-to của RabbitMQ. Điều này có nghĩa là khi xảy ra lỗi trong lúc xử lý một thông điệp, chúng tôi vẫn gửi một thông điệp phản hồi chứa lý do thất bại.
Bộ tổng hợp báo cáo
Bộ tổng hợp báo cáo hoạt động như một bộ tiêu thụ thông điệp tiêu chuẩn và đã được bổ sung chức năng để cho phép thử lại thông điệp. Có hai tùy chọn cấu hình trên dịch vụ.
Retrymessages là một giá trị bool mặc định là true, cho phép chức năng thử lại thông điệp. Nếu bị tắt, tất cả các thông điệp thất bại sẽ ngay lập tức được đưa vào hàng đợi dead letter.
Messagettl là một số nguyên biểu thị số giây mà một thông điệp có thể tồn tại trong hàng đợi. Điều này nhằm tránh việc thông điệp bị dồn ứ do một thông điệp lỗi thử lại vô hạn. Khi thời gian tồn tại của một thông điệp đã hết, nó sẽ được đưa vào hàng đợi dead letter. Giá trị mặc định trong mã là 30 giây.
Chức năng của bộ tổng hợp báo cáo không mang tính thiết yếu đối với việc khách hàng nhận được tệp của họ và được dùng để tạo dữ liệu báo cáo tổng hợp. Vì vậy, việc một thông điệp của bộ tổng hợp báo cáo bị chuyển vào dead letter không được xem là lỗi nghiêm trọng và các dead letter được chấp nhận (chỉ trong những trường hợp cực đoan).