Tôi đang sử dụng SDK AWS cho Java và tôi đang sử dụng trình khách vùng đệm async đệm để yêu cầu hàng loạt để tôi giảm chi phí.Làm thế nào tôi có thể buộc AmazonSQSBufferedAsyncClient xóa thư?
Khi ứng dụng của tôi tắt, tôi muốn đảm bảo rằng không có thư nào đang chờ trong bộ đệm, nhưng không có phương thức .flush()
tôi có thể thấy trên máy khách.
Có AmazonSQSBufferedAsyncClient.shutdown()
xóa thư khi được gọi? Tôi nhìn vào số source code và không rõ ràng. Phương pháp này gọi shutdown()
trên mỗi QueueBuffer
rằng nó có, nhưng bên trong QueueBuffer.shutdown()
nó nói
public void shutdown() {
//send buffer does not require shutdown, only
//shut down receive buffer
receiveBuffer.shutdown();
}
Hơn nữa, tài liệu cho .shutdown()
nói:
tắt đối tượng khách hàng này, phát hành bất kỳ tài nguyên mà có thể tổ chức mở. Đây là phương pháp tùy chọn và người gọi không được mong đợi để gọi số, nhưng có thể nếu họ muốn phát hành rõ ràng mọi tài nguyên mở . Khi một khách hàng đã bị tắt, nó không nên được sử dụng để thực hiện thêm bất kỳ yêu cầu nào.
Đối với ứng dụng này, tôi cần đảm bảo không có thư bị mất trong khi được lưu vào bộ đệm. Tôi có cần phải xử lý thủ công điều này bằng cách sử dụng thông thường AmazonSQSClient
thay vì sử dụng chế độ đệm/không đồng bộ không?
Tôi thấy điều này, mà dường như là cùng một câu hỏi, và hiện đang được trả lời: https://forums.aws.amazon.com/thread.jspa?threadID=122189 – Daenyth