2014-04-15 20 views
5

Theo tài liệu thử/chạy lại mùa xuân (http://docs.spring.io/spring-batch/reference/html/retry.html) trong phần 9.2, bạn có thể chỉ định ngoại lệ nào bạn muốn thử lại hoặc không thử lại thông qua setRetryableExceptions hoặc setFatalExceptions khi sử dụng SimpleRetryPolicy. Tuy nhiên, các phương pháp này không được định nghĩa trong bản phát hành hiện tại (1.0.3) trong GitHub https://github.com/spring-projects/spring-retry/blob/master/src/main/java/org/springframework/retry/RetryPolicy.java.spring retry setRetryableExceptions, setFatalExceptions không có sẵn

Vì vậy, đây có phải là lỗi tài liệu không? Nếu không, thì các phương pháp nằm ở đâu?

Từ mã nguồn, có vẻ như chỉ có các ngoại lệ có thể thử lại mới có thể được đặt thông qua hàm tạo có Bản đồ ngoại lệ. Dường như không có cách nào để xác định ngoại lệ chết người.

Trả lời

4

Có thể điều này có thể hữu ích. Bạn phải tạo một bản đồ chứa tất cả các ngoại lệ có thể thử lại bằng cách gõ và thêm nó vào chính sách. Có lẽ tương tự với trường hợp ngoại lệ chết người.

Map<Class<? extends Throwable>, Boolean> r = new HashMap<>(); 
r.put(RetryException.class, true); 
SimpleRetryPolicy p = new SimpleRetryPolicy(MAX_RETRIES, r); 
RetryTemplate t = new RetryTemplate(); 
t.setRetryPolicy(p); 
+0

Vâng, điều này cũng tương tự như những gì tôi đã kết thúc. Tôi vừa xác định các ngoại lệ có thể thử lại trong bản đồ. Bất kỳ ngoại lệ nào không có trong bản đồ đều được coi là ngoại lệ chết người. – user3537621

0

Tôi cũng phải triển khai Cơ chế thử lại trong dự án của mình và tôi đã tạo triển khai của riêng mình.

Retry using AOP

này hoạt động như một nét duyên dáng (duy nhất tôi không tìm thấy một cách chưa đảm bảo rằng chỉ có một ví dụ khía cạnh trong instantiated tại một thời điểm.)

Bạn chỉ có thể chú thích phương pháp của bạn với @Retry chú thích, cung cấp một số cấu hình bạn muốn và thực hiện của nó.

Các vấn đề liên quan