����λ�ã���ҳ > �����̳� > �̳� > 5. Spring Cloud OpenFeign ����ʽ WebService �ͻ��˵ij���ϸʹ��
5. Spring Cloud OpenFeign ����ʽ WebService �ͻ��˵ij���ϸʹ�� @Ŀ¼5. Spring Cloud OpenFeign ����ʽ WebService �ͻ��˵ij���ϸʹ��ǰ��1. OpenFeign ����1.1 Feign �� OpenFeign ����2. Op
@[toc]
- ��Ӧ��һƪѧϰ���ݣ�??? 4. Spring Cloud Ribbon ʵ�֡����ؾ��⡱����ϸ����˵��_ribbon��������loadbalancer-CSDN����
- ��Ӧ��һƪѧϰ���ݣ�???
OpenFeign ��ʲô ��
OpenFeign �Ǹ�����ʽ
WebService
�ͻ��ˣ�ʹ�� OpenFeign �ñ�д Web Service�ͻ��˸��򵥡�
����ʹ�÷����� ����һ������ӿڣ�Ȼ������������ע�⡣
OpenFeign Ҳ֧�ֿɲ��ʽ�� ������ �� ������ ��
Spring Cloud �� OpenFeign �����˷�װʹ��֧���� Spring MVC ��עע�� ��
HttpMessageConverters
��
OpenFeign ������ Eureka �� Ribbon ���ʹ����֧�ָ��ؾ��⡣
OpenFeign ������ַ�� https://github.com/spring-cloud/spring-cloud-openfeign
�򵥵�˵������һ�� Web Service �ͻ��˷��ʵģ�ת����һ�����������ʵ�� Server ��Ⱥ��ͨ�ţ��� Web Service �ͻ��� ��
Feign��
org.springframework.cloud
spring-cloud-starter-openfeign
OpenFeign��
org.springframework.cloud
spring-cloud-starter-openfeign
�������&ͼ��
ʾ��ͼ��
�ο� member-service-consumer-80 ���� member-service-consumer-openfeign-80(���岽 ��ο���ǰ)
pom.xml
�ļ����У�������ص� jar �������ر���������ǵ�����
openFeign
��
org.springframework.cloud
spring-cloud-starter-openfeign
������ pom.xml �ļ���Ϣ��
http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
e-commerce-center
com.rainbowsea
1.0-SNAPSHOT
4.0.0
member-service-consumer-openfeign-80
org.springframework.cloud
spring-cloud-starter-openfeign
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-actuator
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
com.rainbowsea
e_commerce_center-common-api
${project.version}
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
application.yml
����һЩ��ص�������Ϣ�� ��������:
server:
port: 80
spring:
application:
name: member-service-consumer-openfeign-80
# ���� eureka client ע�⣬��Ϊ�����ģ������Ϊ client �ͻ��˵Ľ�ɫ�ģ�����Ҫ���Լ�client����Ϣ���͸� Server ����ȥ��
eureka:
client:
register-with-eureka: true # ��ʾ���Լ�ע�ᵽ Eureka-Server ����
fetch-registry: true # ��ʾ����Ϣ���͵� Eureka-Server ����
service-url:
# ��ʾ���Լ�ע�ᵽ�Ǹ� eureka-server
# defaultZone: http://localhost:9001/eureka
# ����΢����ע�ᵽ��� eureka - server ���У�ʹ�ö��ż������
defaultZone: http://eureka9001.com:9001/eureka/,http://eureka9002.com:9002/eureka/
member-service-consumer-openfeign-80
���������࣬Ҳ���dz�����������
�ڣ�������
com.rainbowsea.springcloud
��������Ϊ
MemberConsumerOpenfeignApplication80
���������࣬����ͼ��ʾ��
package com.rainbowsea.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableEurekaClient // ��ʾ��Ϊ Eureka Client ��ɫ
@EnableFeignClients // ���� OpenFeignClient
public class MemberConsumerOpenfeignApplication80 {
public static void main(String[] args) {
SpringApplication.run(MemberConsumerOpenfeignApplication80.class, args);
}
}
������������֮�����ǿ��Բ���һ�£��Ƿ�ɹ�����ģ��
member-service-consumer-openfeign-80
ע�ᵽ�� Eureka Server ����ȥ�ˡ�
ע�⣺����IJ������ǣ��� OpenFeign �ĺ��������ˡ�
member-service-consumer-openfeign-80
ģ�鵱�д���һ��
com.rainbowsea.springcloud.service
�����ڸð����д���һ��
MemberFeignService
�ӿڣ�ע��ע���ǽӿ�
interface
�����ࡣ����ͼ��ʾ��
package com.rainbowsea.springcloud.service;
import com.rainbowsea.springcloud.entity.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@Component
public interface MemberFeignService {
}
Ȼ��������Ҫ�����У�����
member-service-consumer-openfeign-80
ģ������Ϊ Eureka Client �ͻ��˴��ڵģ�����ʹ�� OpenFeign �򻯿ͻ��ˣ����ǻ��轫 ������ OpenFeigin(Ҳ���ǿͻ��ˣ�Ҳ���� Eureka Client ) ��Ҫ���õ��ĸ�
provider service(������/����Ⱥ)
�������ǵ�ҵ������������
����Ⱥ
���������������� privoid service ���Դ������������ҵ������ͼ���ܣ��ֱ�Ϊ��
member-service-provider-10000��member-service-provider-10002 ����������(�������������Ѿ��໥ע����ˣ�����Ϊ�˷���Ⱥ�� )
����������
MemberFeignService
�ӿ�����ʹ��
@FeignClient
ע���ע��������� OpenFeigin(Ҳ���ǿͻ��ˣ�Ҳ���� Eureka Client ) ��Ҫ���õ��ĸ�
provider service(������/����Ⱥ)
�������ǵ�ҵ������ͼ��ʾ��
package com.rainbowsea.springcloud.service;
import com.rainbowsea.springcloud.entity.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@Component
//���� MEMBER-SERVICE-PROVIDER ���� Eureka Server �����ṩ��ע�������
@FeignClient(value = "MEMBER-SERVICE-PROVIDER") // ��� value ֵ����,��Ӧ������Ҫ���ʵ� provider(�ṩ����/����Ⱥ)�� name ����
public interface MemberFeignService {
}
ͬʱ���ǻ���Ҫ��
MemberFeignService
�ӿڵ��ж���һ��������
ע��������������������� OpenFeigin(Ҳ���ǿͻ��ˣ�Ҳ���� Eureka Client ) ��Ҫ���õ��ĸ�
provider service(������/����Ⱥ)
�еĴ�����Ӧҵ��� �ĸ����� ������һ��(Ȩ�����η�һ�£�**Http����ʽ(����������Ӧ������ӳ��·��)**һ�£��������ͣ���������һ�£�����ֵ����Ҳ��һ�µģ����������Բ�һ��(��ǿ�ҽ���Ҳ����һ��))������ǿ�ҽ��飬ֱ�ӴӶ�Ӧ�� provider service ���и��ƹ������ɡ�����ͼ������ʹ�õ���getMemberById
���� id ��ѯ��ҵ����������ֻ�轫�䷽�������ƹ������ɡ�
![]()
package com.rainbowsea.springcloud.service; import com.rainbowsea.springcloud.entity.Result; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @Component //���� MEMBER-SERVICE-PROVIDER ���� Eureka Server �����ṩ��ע������� @FeignClient(value = "MEMBER-SERVICE-PROVIDER") // ��� value ֵ����,��Ӧ������Ҫ���ʵ� provider(�ṩ����/����Ⱥ)�� name ���� public interface MemberFeignService { // ע�⣺���ﶨ�巽��-����Զ�̵��õĽӿڣ����鸴�ƹ��� /* 1.Զ�̵��õķ�ʽ��get 2.Զ�̵��õ� url http://MEMBER-SERVICE-PROVIDER(ע�ᵽ�����еı���)/member/get/{id} 3.MEMBER-SERVICE-PROVIDER ���Ƿ����ṩ���� Eureka Server ע��ķ��� 4. openfeign ����ݸ��ؾ���������� 10000/10002 -Ĭ������ѯ 5.��Ϊopenfeign �ô���֧���� spring mvc ע�� + �ӿڽ⹹ 6. ��Ҫʹ�� OPFeign ��Ҫ�ڶ�Ӧ������������λ�������ϣ� @EnableFeignClients // ���� OpenFeignClient */ @GetMapping("/member/get/{id}") Result getMemberById(@PathVariable("id") Long id); }
��������ڵ�ǰ
member-service-consumer-openfeign-80
ģ��Ҳ�������ǵ� OpenFeigin(Ҳ���ǿͻ��ˣ�Ҳ���� Eureka Client ) ��д����������
com.rainbowsea.springcloud.controller
���£���д��Ӧ�Ŀ�����������ͼ��ʾ��
package com.rainbowsea.springcloud.controller;
import com.rainbowsea.springcloud.entity.Result;
import com.rainbowsea.springcloud.service.MemberFeignService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
public class MemberConsumerFeignController {
// װ��MemberFeignService
@Resource
private MemberFeignService memberFeignService;
@GetMapping("/member/consumer/openfeign/get/{id}")
public Result getMemberById(@PathVariable("id") Long id) {
// ���ýӿ��еķ���
return memberFeignService.getMemberById(id);
}
}
- �ر�˵������Ϊ���ǵ� OpenFeign ����һ��ͨ��
�ӿ�+ע���
��ʽ��ΪEureka Client �ͻ���,�������� Service ������- Openfeign ��ʹ�õ��ص㣺
΢����ӿ�+@FeignClient
,ʹ�ýӿڽ��н���(�򵥵�˵:����ʹ�ýӿڵ��ö�Ӧ provider �ṩ����ļ�Ⱥ)
���ԣ�����������
��������� : http://localhost/member/consumer/openfeign/get/1
�۲���ʵ� 10000/10002 �˿ڵķ�������ѯ��
@FeignClient(value = "MEMBER-SERVICE-PROVIDER")
// ��� value ֵ����,��Ӧ������Ҫ���ʵ� provider(�ṩ����/����Ⱥ)�� name ���� ���ԣ�ע�ⲻҪ���ṩע������ƣ�д����
˵�� OpenFeign �ṩ����־��ӡ���ܣ�����ͨ��������������־���𣬴���� OpenFeign �ӿڵĵ���������м�غ������
��־����
- NONE: Ĭ�ϵģ�����ʾ�κ���־
- BASIC: ����¼����ʽ��URL,��Ӧ״̬�뼰ִ��ʱ��
- HEADERS:���� BASIC �ж������Ϣ֮�⣬�����������Ӧ��ͷ��Ϣ
- FULL: ����HEADERS �ж������Ϣ֮�⣬�����������Ӧ�����ļ�Ԫ����
��������־������ 5 �֣��ֱ��� error��warn��info��debug��trace
- error��������־��ָ�Ƚ����صĴ��󣬶�����ҵ����Ӱ�죬��Ҫ��ά���ü�صģ�
- warn��������־��һ��Ĵ��󣬶�ҵ��Ӱ�첻�󣬵�����Ҫ������ע��
- info����Ϣ��־����¼�Ų�����Ĺؼ���Ϣ�������ʱ�䡢������εȵȣ�
- debug�����ڿ��� DEBUG �ģ��ؼ��߼����������ʱ���ݣ�
- trace������ϸ����Ϣ��һ����Щ��Ϣֻ��¼����־�ļ��С�
��member-service-consumer-openfeign-80 ���� com.Rainbowsea.springcloud.config.OpenFeignConfig.java ��
package com.rainbowsea.springcloud.config;
import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class OpenFeignConfig {
@Bean
public Logger.Level loggerLever() {
// /��־����ָ��Ϊ FULL
return Logger.Level.FULL;
}
}
��
member-service-consumer-openfeign-80
ģ�鵱���޸�
application.yml
�������������Ƕ��ĸ��������־��ӡ��Ϣ���Լ���ӡ���õ���־��Ϣ��
����
��
logging:
level:
# �� MemberFeignService �ӿڵ��ù��̴�ӡ��Ϣ-Debug
com.rainbowsea.springcloud.service.MemberFeignService: debug
server:
port: 80
spring:
application:
name: member-service-consumer-openfeign-80
# ���� eureka client ע�⣬��Ϊ�����ģ������Ϊ client �ͻ��˵Ľ�ɫ�ģ�����Ҫ���Լ�client����Ϣ���͸� Server ����ȥ��
eureka:
client:
register-with-eureka: true # ��ʾ���Լ�ע�ᵽ Eureka-Server ����
fetch-registry: true # ��ʾ����Ϣ���͵� Eureka-Server ����
service-url:
# ��ʾ���Լ�ע�ᵽ�Ǹ� eureka-server
# defaultZone: http://localhost:9001/eureka
# ����΢����ע�ᵽ��� eureka - server ���У�ʹ�ö��ż������
defaultZone: http://eureka9001.com:9001/eureka/,http://eureka9002.com:9002/eureka/
logging:
level:
# �� MemberFeignService �ӿڵ��ù��̴�ӡ��Ϣ-Debug
com.rainbowsea.springcloud.service.MemberFeignService: debug
����
�����: http://localhost/member/consumer/openfeign/get/1
IDEA ��˲鿴��ӡ����ʾ����־��Ϣ��
OpenFeign ��ʱ�� ��������������һ�����⣺
����ģ�������쳣����
member-service-provider-10000
��
member-service-provider-10002
���� service �����ṩ�����е�
getMemberById
������ģ�ⳬʱ ,������ͣ 5�롣
// ģ�ⳬʱ ,������ͣ 5��
try {
TimeUnit.SECONDS.sleep(5);
} catch (Exception e) {
e.printStackTrace();
}
��������� http://localhost/member/consumer/openfeign/get/1
������:
�������ʾ: Read timed out executing GET http://MEMBER-SERVICE-PROVIDER/member/get/1
IDEA�����ʾ: java.net.SocketTimeoutException: Read timed out
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is feign.RetryableException: Read timed out executing GET http://MEMBER-SERVICE-PROVIDER/member/get/1] with root cause
![]()
Ô�����: OpenFeign Ĭ�ϳ�ʱʱ�� 1 ���� �����ȴ����ؽ�� 1 �� �������� 1 �룬��ᱨ����
���ó�ʱʱ��
˵��: ��ijЩ����£�һ���������ʱ�����Ҫ���� 1 �룬����Ҫ�������ó�ʱʱ�䡣
�����������ó�ʱʱ������Ϊ��
8��
��������ģ����� 5�룬5 ��С�� 8 �룬���Ի��ڳ�ʱʱ��ķ�Χ�ڣ����Ա����ʡ�
���� OpenFeign ��ʱʱ�䣬������Ҫ��
application.yaml
�ļ����н������á�
����ͼ��ʾ��
# OpenFeign ��ʱ
ribbon:
# #���� feign �ͻ��˳�ʱʱ�䣨openFeign Ĭ��֧�� ribbon) #ָ���ǽ������Ӻ�ӷ�������ȡ��������Դ���õ�ʱ�䣬
# #ʱ�䵥λ�Ǻ���
ReadTimeout: 8000
# #ָ���ǽ����������õ�ʱ�䣬����������״������������£�
# #�����������õ�ʱ��
ConnectTimeout: 8000
server:
port: 80
spring:
application:
name: member-service-consumer-openfeign-80
# ���� eureka client ע�⣬��Ϊ�����ģ������Ϊ client �ͻ��˵Ľ�ɫ�ģ�����Ҫ���Լ�client����Ϣ���͸� Server ����ȥ��
eureka:
client:
register-with-eureka: true # ��ʾ���Լ�ע�ᵽ Eureka-Server ����
fetch-registry: true # ��ʾ����Ϣ���͵� Eureka-Server ����
service-url:
# ��ʾ���Լ�ע�ᵽ�Ǹ� eureka-server
# defaultZone: http://localhost:9001/eureka
# ����΢����ע�ᵽ��� eureka - server ���У�ʹ�ö��ż������
defaultZone: http://eureka9001.com:9001/eureka/,http://eureka9002.com:9002/eureka/
logging:
level:
# �� MemberFeignService �ӿڵ��ù��̴�ӡ��Ϣ-Debug
com.rainbowsea.springcloud.service.MemberFeignService: debug
# OpenFeign ��ʱ
ribbon:
# #���� feign �ͻ��˳�ʱʱ�䣨openFeign Ĭ��֧�� ribbon) #ָ���ǽ������Ӻ�ӷ�������ȡ��������Դ���õ�ʱ�䣬
# #ʱ�䵥λ�Ǻ���
ReadTimeout: 8000
# #ָ���ǽ����������õ�ʱ�䣬����������״������������£�
# #�����������õ�ʱ��
ConnectTimeout: 8000
��������: http://localhost/member/consumer/openfeign/get/1, ������ֳ�ʱ������ѯ���� 10000/10002
��������
pom.xml
����������
spring-boot-starter-actuator
������ jar ���;Ϳ���ʹ�ø� ���ϵͳ�ˡ�����Ҫ����������
spring-boot-starter-actuator ��spring boot ����ļ��ϵͳ,����ʵ�ֽ������,info ��Ϣ��
����http://localhost:80/actuator ���Կ���������ӣ���������������á�
spring-boot-starter-actuator
���ʵ��﷨���ӣ�url��ַ+����ģ���Ӧ�Ķ˿ں�/actuator
��
WebService
�ͻ��ˣ�ʹ�� OpenFeign �ñ�д Web Service�ͻ��˸��򵥡�
΢����ӿ�+@FeignClient
,ʹ�ýӿڽ��н���(�򵥵�˵:����ʹ�ýӿڵ��ö�Ӧ provider �ṩ����ļ�Ⱥ)
΢����ӿ�+@FeignClient
,ʹ�ýӿڽ��н���(�򵥵�˵:����ʹ�ýӿڵ��ö�Ӧ provider �ṩ����ļ�Ⱥ)
spring-boot-starter-actuator
���ʵ��﷨���ӣ�
url��ַ+����ģ���Ӧ�Ķ˿ں�/actuator
��
�����������ƪ���У���Ҫ�����Ҷ�ÿһλ���ߵĸм�֮�顣���ǵĹ�ע�ͻظ����Ҵ����Ķ���ԴȪ���Ҵ�����������ȡ���޾���������������һὫ���ǵĹ��������ĵף�����������������ܶ�����л���ǣ������ܻ���ij��ʱ���ٴ���������
![]()
ʹ��Blender���ɳ���ģ��
�Ķ�ȫ����������ERA5�����ط���
�Ķ�Xpath���������﷨
�Ķ�����ѧϰ�������繹�����£�
�Ķ���ΪMateƷ��ʢ�䣺HarmonyOS NEXT�ӳ�����Ϸ���ܵõ�����ͷ�
�Ķ�ʵ�ֶ��󼯺���DataTable���໥ת��
�Ķ�Ӳ�̵Ļ���֪ʶ��ѡ��ָ��
�Ķ�������й��ƶ��ı�ͼ��ײ�
�Ķ�����NEXTԪ�����������ѿ����ϼ���Ʒ
�Ķ��ᳲ���С������������Ƽ��رշ���
�Ķ������ArcMap�����н���դ��ͼ���ز�������
�Ķ��㷨�����ݽṹ 1 - ģ��
�Ķ���Ѷ�����߿ͷ���Ӫ��ϵͳ����
�Ķ���Ѷ��Ƶҹ��ģʽ���ý̳�
�Ķ����ں���NEXT��Ѫ���Ŵ���������������
�Ķ�5. Spring Cloud OpenFeign ����ʽ WebService �ͻ��˵ij���ϸʹ��
�Ķ�Java����ģʽ����̬�����Ͷ�̬�����ĶԱȷ���
�Ķ�Win11�ʼDZ����Զ�����Ӧ�õ���ɫ����ʾ����
�Ķ�˼�� V1.5.6 ��׿��
��ս�귨 V7.5.0 ��׿��
У��������������׵������� V1.0 ��׿��
��˸֮�� V1.9.7 ��׿��
������Ե����� v1.0.4 ��׿��
������֮ŠV5.2.3 ��׿��
��������������Դ V1.0 ��׿��
���֮Ϣ V1.0 ��׿��
��ħ������������䣩 V1.0 ��׿��
���ں�������ϵ�����������������վ�����������������Ƽ�����
Ƶ�� ����Ƶ��������ר������������׿�������app����
�Ƽ� ��Ô���������°��������ܿ������ز���
���� ����ɫ������������ ���������ս������������
ɨ��ά�����������ֻ��汾��
ɨ��ά����������΢�Ź��ںţ�
��վ�������������������ϴ��������ַ���İ�Ȩ���뷢�ʼ�[email protected]
��ICP��2022002427��-10 �湫��������43070202000427��© 2013~2025 haote.com ������