springcloud-服务注册与调用(熔断机制)

Eureka-server是服务注册中心,服务提供方需要将自己的服务在Eureka注册,消费者才能从Eureka消费服务。在这个过程中参与角色有三个:Eureka-Server(服务注册中心)、Spring-Cloud-Provider(服务提供者)、Spring-Cloud-Consumer(服务消费者)

Eureka-Server

Eureka服务依然是上篇文章的案例。

Spring-Cloud-Provider

1 配置文件(依赖的jar包与上案例相同):

 
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter</artifactId>
			<version>2.0.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
			<version>2.0.2.RELEASE</version>
		</dependency>
spring.application.name=spring-cloud-provider
server.port=8009
#指向服务注册中心
eureka.client.serviceUrl.defaultZone=http://localhost:8008/eureka/

2 提供的服务(编写一个简单的控制类,拦截hello.action请求,返回"Hello World")

@Controller
public class HelloController {
    
    @RequestMapping("/hello.action")
    @ResponseBody
    public String hello(){
        return "Hello World";
    }
}

3 在application.class加上@EnableDiscoverClient,添加注解后,项目就具有了服务注册的功能。启动工程后,就可以在注册中心的页面看到spring-cloud-provider服务。

Spring-Cloud-Consumer

1 导入依赖的jar包

	<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter</artifactId>
			<version>2.0.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
			<version>2.0.2.RELEASE</version>
		</dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.0.2.RELEASE</version>
        </dependency>

2 配置文件

spring.application.name=spring-cloud-consumer
server.port=8010
feign.hystrix.enabled=true
eureka.client.serviceUrl.defaultZone=http://localhost:8008/eureka/

3 服务调用接口(调用服务提供方的服务)fallback是调用失败返回指定结果

@Component
@FeignClient(name="spring-cloud-provider",fallback = Fail.class)
public interface HelloService {
    @RequestMapping("hello.action")
    public String say();
}

4 Fail类代码

public class Fail implements  HelloService{

    @Override
    public String say() {
        return "服务调用失败";
    }
}

5 在DemoApplication类加上@EnableDiscoveryClient;@EnableFeignClients(调用服务)注解

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

运行结果:

启动服务输入 http://localhost:8010/haha.action ,输出"Hello World"

猜你喜欢

转载自blog.csdn.net/qq_40693828/article/details/85160333