6

Trong ứng dụng của tôi, tôi cần phải gọi một điểm cuối bên ngoài và nếu nó là quá chậm một dự phòng được kích hoạt.Làm cách nào để thực hiện kiểm tra tích hợp để kiểm tra xem dự phòng ngắt mạch của tôi có được gọi không?

Các mã sau đây là một ví dụ về cách ứng dụng của tôi trông giống như:

@FeignClient(name = "${config.name}", url = "${config.url:}", fallback = ExampleFallback.class) 
public interface Example { 
@RequestMapping(method = RequestMethod.GET, value = "/endpoint", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) 
    MyReturnObject find(@RequestParam("myParam") String myParam); 
} 

Và triển khai dự trữ của nó:

@Component 
public Class ExampleFallback implements Example { 

    private final FallbackService fallback; 

    @Autowired 
    public ExampleFallback(final FallbackService fallback) { 
     this.fallback = fallback; 
    } 

    @Override 
    public MyReturnObject find(final String myParam) { 
     return fallback.find(myParam); 
    } 

Ngoài ra, một thời gian chờ cấu hình cho ngắt mạch: hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 5000

Làm thế nào tôi có thể thực hiện kiểm tra tích hợp để kiểm tra xem mạch của tôi có đang hoạt động hay không, nghĩa là, nếu điểm cuối của tôi (được giả định trong trường hợp đó) là chậm hoặc nếu nó trả về lỗi như 4xx hoặc 5xx?

Tôi đang sử dụng Spring Boot 1.5.3 với Spring Cloud (Feign + Hystrix)

Trả lời

1

Lưu ý tôi không biết Feign hoặc Hystrix.

Theo tôi, có vấn đề khi triển khai tích hợp tự động mô phỏng các triển khai thực hiện khác nhau của Feign + Hystrix - chi tiết triển khai này có thể thay đổi bất kỳ lúc nào. Có nhiều loại lỗi khác nhau: điểm cuối chính không thể truy cập được, dữ liệu bất hợp pháp (tức là nhận được lỗi html-errormessage, khi xuất dữ liệu xml ở định dạng đặc biệt), đĩa đầy, .....

nếu bạn giả một điểm cuối bạn đưa ra một giả định về implementationdetail của Feign + Hystrix cách endpoint hoạt động trong một errorituation (tức là trả về null, trả về một số errorcode cụ thể, ném một ngoại lệ kiểu Xyz ....)

tôi sẽ tạo kiểm tra tích hợp với một điểm chính thực sự có một url không bao giờ truy cập và một điểm cuối giả định-fallback nơi bạn xác minh rằng dữ liệu được xử lý đến từ mô hình. Bài kiểm tra tự động này giả định rằng việc xử lý "kết nối mạng quá chậm" giống với "url-notfound" từ quan điểm của ứng dụng của bạn.

Đối với tất cả các thử nghiệm khác, tôi sẽ tạo một giao diện bao bọc mỏng xung quanh Feign + Hystrix, nơi bạn giả lập Feign + Hystrix. Bằng cách này, bạn có thể tự động kiểm tra ví dụ những gì sẽ xảy ra nếu bạn nhận được 200byte từ giao diện chính và sau đó nhận được một expetion.

Để biết chi tiết về cách ẩn phụ thuộc bên ngoài, hãy xem onion-architecture

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