Resilience4j में circuitbreaker, पुन: प्रयास करें और timelimiter का घालमेल

वोट
0

मैं Resilience4j सुविधाओं का उपयोग करने की कोशिश कर रहा हूँ। मेरे उपयोग के मामले circuitbreaker, पुन: प्रयास करें और timelimiter मॉड्यूल गठबंधन करने के लिए है। यहाँ मैं क्या करने की कोशिश की है।

  Supplier<R> supplier = this::doSomething;
  timeLimiter.executeFutureSupplier(
          () -> CompletableFuture.supplyAsync(supplier));
  return Decorators.ofSupplier(supplier)
            .withCircuitBreaker(circuitBreaker)
            .withRetry(retry)
            .withBulkhead(bulkhead)
            .decorate();

यहां मुद्दा यह है, है मेरी DoSomething () विधि कार्यान्वित दो बार। किसी को भी इस मुद्दे को पहले देखा है? मैं इन सभी मॉड्यूल गठबंधन और केवल एक बार विधि पर अमल करना चाहते हैं। आपकी सहायता के लिए धन्यवाद।

13/02/2020 को 21:59
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

आप उपयोग कर रहे timeLimiter.executeFutureSupplierहै जो इसे सजाने के बजाय भविष्य निष्पादित करता है। वास्तव में इस क्रम में इसका इस्तेमाल करें:

ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(3);
Supplier<R> supplier = this::doSomething;

CompletableFuture<R> future = Decorators.ofSupplier(supplier)
    .withThreadPoolBulkhead(threadPoolBulkhead)
    .withTimeLimiter(timeLimiter, scheduledExecutorService)
    .withCircuitBreaker(circuitBreaker)
    .withRetry(retry)
    .get().toCompletableFuture();
14/02/2020 को 07:53
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more