feign使用超时处理及其feign日志打印

需要注册中心 生产者 消费者

1.生产者模块创建

pom 主要是要有eureka依赖

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<!--监控-->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-actuator</artifactId>
	</dependency>
	<dependency>
		<groupId>org.mybatis.spring.boot</groupId>
		<artifactId>mybatis-spring-boot-starter</artifactId>
	</dependency>
	<!--eureka client-->
	<!--<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
	</dependency>-->
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>druid-spring-boot-starter</artifactId>
	<!--如果没写版本,从父层面找,找到了就直接用,全局统一-->
	</dependency>
	<!--mysql-connector-java-->
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
	</dependency>
	<!--jdbc-->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-jdbc</artifactId>
	</dependency>
	<!--热部署-->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
	<scope>runtime</scope>
	<optional>true</optional>
	</dependency>
	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<optional>true</optional>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
	<dependency>
		<groupId>cn.hehe</groupId>
		<artifactId>cloud-api-commons</artifactId>
		<version>1.0-SNAPSHOT</version>
		<scope>compile</scope>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
	</dependency>
</dependencies>

配置文件 向eureka注册

eureka:
	client:
		service-url:
			defaultZone: http://eureka7001.com:7001/eureka/
# defaultZone:http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
# 抓取eureka中已注册的服务,集群服务必须开启,ribbon才能实现负载均衡
		fetch-registry: true
# 是否向eureka注册自己
		register-with-eureka: true
	instance:
		# eureka控制台显示的集群的id
		instance-id: payment8001
		# 显示集群实例ip
		prefer-ip-address: true

启动类 开启eureka客户端

@SpringBootApplication
@EnableEurekaClient
@MapperScan(basePackages = "cn.hehe.payment.dao")
public class PaymentApplication8001 {
	public static void main(String[] args) {
		SpringApplication.run(PaymentApplication8001.class,args);
	}
}

需要feign调用的代接口
@GetMapping("selectOne")
public Result<Payment> selectOne(Integer id) {
	Result<Payment> res = new Result<>(200,"操作成功:"+port,this.paymentService.queryById(id));
	return res;
}

2.消费者模块搭建

pom文件 主要有openfeign和eureka依赖

<dependencies>
	<dependency>
		<groupId>cn.hehe</groupId>
		<artifactId>cloud-api-commons</artifactId>
		<version>${project.version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<!-- openfeign -->
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-openfeign</artifactId>
	</dependency>
	<!--监控-->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-actuator</artifactId>
	</dependency>
	<!--eureka client-->
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
	</dependency>
	<!--热部署-->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
		<scope>runtime</scope>
		<optional>true</optional>
	</dependency>
	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<optional>true</optional>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
</dependencies>

配置文件

eureka:
	client:
		# 抓取eureka中已注册的服务,集群服务必须开启,ribbon才能实现负载均衡
		fetch-registry: true
		# 是否向eureka注册自己
		register-with-eureka: true
			service-url:
				defaultZone: http://eureka7001.com:7001/eureka/
				# defaultZone:http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
	instance:
		instance-id: order80
		prefer-ip-address: true

主启动类 开启eureka客户端和feign客户端注解

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class EurekaOrderApplication {
	public static void main(String[] args) {
		SpringApplication.run(EurekaOrderApplication.class,args);
	}
}

编写feign客户端接口

@FeignClient("CLOUD-PAYMENT-SERVICE")
@Component
public interface PaymentFeginClient {

	@GetMapping("/selectOne")
	Result<Payment> selectOne(@RequestParam("id") Integer id);
	
	@GetMapping("/timeout")
	String timeOut();
}

feign客户端调用

@RestController
@RequestMapping("order")
public class OrderController {

	@Autowired
	private PaymentFeginClient paymentFeginClient;
	
	@GetMapping("queryOrder")
	public Result<Payment> queryOrder(Integer id) {
		Result<Payment> paymentResult = paymentFeginClient.selectOne(id);
		return paymentResult;
	}
}

feign客户端超时调用解决方法
配置文件新增以下配置

#设置feign客户端超时时间(OpenFeign默认支持ribbon)
ribbon:
	#指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的实际
	ReadTimeout: 5000
	#指的是建立连接后从服务器读取到可用资源所用的时间
	ConnectTimeout: 5000

feign日志打印
配置一下bean

@Bean
public Logger.Level getFeignLogger(){
	return Logger.Level.FULL;
}

然后在配置文件中添加

logging:
	level:
		#feign日志以什么级别监控哪个路径下的接口
		cn.hehe.order: debug
		#可以指定具体某个接口
		#cn.hehe.order.feign.PaymentFeginClient: debug
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值