应用系统定制开发SpringCloud Zuul(Ribbon)重试配置不生效解决办法

应用系统定制开发学习的功能时, 应用系统定制开发想测试一下重发功能, 应用系统定制开发按网上的资料配置好ribbon后, 发起重试不起作用,找了好多文章,并且综合了一下, 才找到问题, 这里记录一下,希望能帮到像我一样的小白。

按网上好多文章配置好不生效, 关键还要引用spring-retry,引用了依赖,还有关键一点配置zuul.retryable=true, 这两点不能少,下面是具体操作。

1.首先这是我的ribbon配置,按照这个配置,启动项目后,不能重发。

 2.加入spring-retry依赖: 

<dependency>    <groupId>org.springframework.retry</groupId>    <artifactId>spring-retry</artifactId></dependency>

3.zuul中加入参数设置,很重要,不然加了依赖也不起作用。

以上三点,重发功能就可以生效了。ribbon配置网上有很多,可以去看下, 我自己也不是很清楚各种配置, 我这里主要是讲怎么让重发生效。希望能帮到大家。

下面是我的测试例子(返回值Result是我自定的对象,如果要用我的例子,改成无返回值都可以):

服务1:

让线程sleep  20秒(触发上面配置的超时)

@RequestMapping(value = "/{id}", method = RequestMethod.GET)public Result<String> test1(@PathVariable String id){    try {        TimeUnit.SECONDS.sleep(20);    } catch (InterruptedException e) {        e.printStackTrace();    }    return new Result<String>().ok(id);}

服务2:

@RequestMapping(value = "/{id}", method = RequestMethod.GET)public Result<String> test1(@PathVariable String id){    System.out.println(id);    return new Result<String>().ok(id);}

测试的时候, 发现如果ribbon里面MaxAutoRetries配置为1时,会先向第一次请求的服务重发一次,如果超时, 然后再换一个服务重发。比如当第一次请求进入的是我上面的服务1时,因为睡了20秒,超时了,会再次向服务1重发一次,因为睡了20秒,又超时了,然后再向我上面的服务2重发。

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发