logo
down
shadow

How to retry with hystrix


How to retry with hystrix

Content Index :

How to retry with hystrix
Tag : java , By : Noah
Date : November 27 2020, 03:01 PM

this one helps. Hystrix itself does not care what kind of command gets wrapped by it and it does not support the idea of retries. Example behind the idea: If your command (that wraps a REST request) is parametrised it could be that some resource endpoints should be retried while others not. It won't be nice to have either two commands that do more or less the same nor a technical parameter to activate a retry. Additionally this will add some extra complexity to the project.
To get around this problem and stick with Hystrix you might want to take a look into SpringRetry if you are working on a Spring application.

Comments
No Comments Right Now !

Boards Message :
You Must Login Or Sign Up to Add Your Comments .

Share : facebook icon twitter icon

Can we use Spring-cloud-netflix and Hystrix to retry failed exectuion


Tag : java , By : nd27182
Date : March 29 2020, 07:55 AM
I wish did fix the issue. From my comment:
Handle this behavior in your code. It's not the job of hystrix to know your "special" business logic. As an example
private final static int MAX_RETRIES = 5;

@HystrixCommand(fallbackMethod = "defaultInvokcation")
public String getRemoteBro(String name) {
    return(executeRemoteService(name));
}

private String executeRemoteService(String serviceName) {
    for (int i = 0; i < MAX_RETRIES; i++) {
        try {
            return reallyExecuteRemoteService(serviceName);
        } catch (ServiceException se) { 
          // handle or log execption
        }
    }
    throw new RuntimeException("bam");
}

Fixing "The web application [ROOT] created a ThreadLocal with key of type [com.netflix.hystrix.Hystrix$1]"


Tag : spring-boot , By : obijywk
Date : March 29 2020, 07:55 AM
I think the issue was by ths following , Ok, I think I solved my own problem such that Tomcat MemoryLeakDetection no longer complains about the Hystrix ThreadLocal anymore. What I did was I added a custom ServletContextListener and in the "contextDestroyed()" method I found a way to forcibly remove the private static ThreadLocal from the com.netflix.hystrix.Hystrix class. This appears to solve the problem. Here's an excerpt from my custom servlet listener:
/**
 * The listener interface for receiving ServletContext events.
 * The class that is interested in processing a ServletContext
 * event implements this interface, and the object created
 * with that class is registered with a component using the
 * component's <code>addServletContextListener<code> method. When
 * the ServletContext event occurs, that object's appropriate
 * method is invoked.
 *
 * @see ServletContextEvent
 */
@Component
public class GatewayServletContextListener implements ServletContextListener{

    private static final Logger LOG = LoggerFactory.getLogger(GatewayServletContextListener.class);

    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        LOG.info("Servlet context listener observed context initialized");
    }

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
        LOG.info("Servlet context listener observed context destroyed");
        cleanupThreadLocals();
    }



    /**
     * Cleanup thread locals.
     */
    private void cleanupThreadLocals() {

        try {
                LOG.info("Cleaning up ThreadLocals ...");

                Field currentCommandField = ReflectionUtils.findField(Hystrix.class, "currentCommand");
                Preconditions.checkNotNull(currentCommandField);

                ReflectionUtils.makeAccessible(currentCommandField);

                @SuppressWarnings("rawtypes")
                ThreadLocal currentCommand = (ThreadLocal)currentCommandField.get(null);

                Preconditions.checkNotNull(currentCommand);

                currentCommand.remove();

                LOG.info("Forcibly removed Hystrix 'currentCommand' ThreadLocal");
                LOG.info("Done cleaning up ThreadLocals");

            } catch(Exception e) {
                LOG.warn(e.getMessage(), e);
            }

    }

}
2016-05-03/10:11:08.646/PDT [http-apr-8080-exec-3] INFO  x.y.z.listeners.GatewayServletContextListener - Servlet context listener observed context destroyed
2016-05-03/10:11:08.648/PDT [http-apr-8080-exec-3] INFO  x.y.z.listeners.GatewayServletContextListener - Cleaning up ThreadLocals ...
2016-05-03/10:11:08.652/PDT [http-apr-8080-exec-3] INFO  x.y.z.listeners.GatewayServletContextListener - Forcibly removed Hystrix 'currentCommand' ThreadLocal
2016-05-03/10:11:08.654/PDT [http-apr-8080-exec-3] INFO  x.y.z.listeners.GatewayServletContextListener - Done cleaning up ThreadLocals

Hystrix command does not run in Hystrix environment


Tag : development , By : Imran
Date : March 29 2020, 07:55 AM
I think the issue was by ths following , Contrary to @pvpkiran's answer, this is not a limitation of AspectJ, but a limitation Spring AOP. Spring AOP is a solution that tries to implement a subset of AspectJ through proxies, and the proxy based approach is what causing the advices not being called when the calls are not made through the proxy.
See Spring AOP capabilities and goals and AOP Proxies in the Spring Framework Reference for more details.

Netflix Hystrix metrics not visible on /hystrix.stream


Tag : java , By : Frank Bradley
Date : March 29 2020, 07:55 AM
will be helpful for those in need I observed that instantiating both HystrixCommand classes and HystrixMetricsStreamServlet from the same OSGi bundle solved my issues.
So I guess the issue was caused by:

How to say Hystrix not to trigger fallback for some of the exceptions in Hystrix command


Tag : java , By : Michael T.
Date : March 29 2020, 07:55 AM
Related Posts Related QUESTIONS :
  • Spring Data JPA query , filter ? search engine ? JPQL?
  • Why LiveData returns null in ViewModel?
  • what this line of code mean....new URLClassLoader(new URL[0],getClass().getClassLoader());
  • Why do need to use new Random() instead of just Random Randomnum?
  • I want to access zk components from the java file
  • How do I cast FieldValue.serverTimestamp() to Kotlin/Java Date Class
  • Insertion Sort Double Array with User Input - JAVA
  • Creating 2 dimesional array with user input and find sum of specific columns
  • can not get Advertising ID Provider in android
  • Convert list of Objects to map of properties
  • How to represent an undirected weighted graph in java
  • Return values as array from collection
  • ByteBuddy generic method return cast to concrete type
  • ImageView hides the round corners of the parent
  • Is there a way to find setter method by its getter method or vice versa in a class?
  • Get aggregated list of properties from list of Objects(Java 8)
  • Unable to find a document in Mongodb where exact date match in java
  • UsernamePasswordAuthenticationFilter skips success handler
  • Use Java filter on stream with in a stream filter
  • Default Login not successful in spring boot 2.1.7
  • Adding key value pairs from a file to a Hashmap
  • Rub regex: matching a char except when after by another char
  • Convert Base64 String to String Array
  • Escape Unicode Character 'POPCORN' to HTML Entity
  • An empty JSON field which is a boolean/nullable field in Java model, is getting converted as null
  • Mongo java driver cannot find public constructor for interface
  • How to unit test writing a file to AWS Lambda output stream?
  • How to make a GitHub GraphQL API Call from Java
  • What's the difference between @ComponentScan and @Bean in a context configuration?
  • Expected class or package adding a view using a class
  • can be delete of a element in a static array be O(1)?
  • Instance variable heap or stack ? ( with specific example)
  • Assert progress of ProgressBar in Espresso test
  • How to detect if gson.fromjson() has excess elements
  • I cant generate the proper code to select the a specific filter on a BI dashboard I am working on
  • How to Inject Dependencies into a Servlet Filter with Spring Boot Filter Registration Bean?
  • Thrift types as a Generic
  • Effective algorithm to random 4 unique integers less than a big max such as 100_000
  • Combining or and negation in Java regex?
  • Unable to instantiate default tuplizer Exception
  • Multi-tenant migration to work with quarkus
  • Ignite persisting a Set: Cannot find metadata for object with compact footer
  • Maven cannot resolve Jacob dependency using eclipse
  • testcontainers oracle database container starts before database user is created
  • Launching two spring boot apps in integration test
  • Is there a way to add a HashMap's value that is a integer array into a ArrayList?
  • Is there any way that I can get a parameter in paintComponent?
  • Empty stack with one recursive method and one iterative method
  • What's the behavior of onBackpressureBuffer in RxJava2
  • Java regex can only use 1 quantifier in a lookback (need 2)
  • How to fix error in native query : it is showing syntax error near or at
  • How to retrieve nested object from a document and display it in FirestoreRecyclerOptions?
  • Why not use ListIterator for full LinkedList Operation?
  • Android Webview EvaluateJavascript sometimes does not return a response
  • Matcher java doesn't work but regex seems to be good
  • Finding dimensions of a .gif file
  • Java Number format how to change +/- sign to custom text
  • Entity partially saved when using JOINED inheritance strategy and setting spring.jpa.properties.hibernate.jdbc.batch_siz
  • Stored Procedure in Java Spring Boot Project returns null as Output
  • How to solve org.hibernate.MappingException which is causing due to inheriting a class
  • shadow
    Privacy Policy - Terms - Contact Us © scrbit.com