Eureka服务提供者和消费者

在上一篇Eureka注册中心中,我们通过添加Eureka依赖,在项目中启动了注册中心,这里我们将:1. 启动服务提供者,将服务注册到注册中心;2. 启动服务消费者,来调用服务提供者所提供的服务接口

1. 服务提供者

创建项目eureka-client-user-service,作为服务提供者注册到Euraka中。

1.1 添加依赖


	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>

		<!--actuator监控依赖-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
	</dependencies>

1.2 编写启动类

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

1.3 服务提供者接口

@RestController
public class UserController {

	@GetMapping("/user/hello")
	public String hello() {
		return "hello";
	}
	
}

1.4 配置文件application.properties

spring.application.name=eureka-client-user-service
server.port=8083

eureka.client.serviceUrl.defaultZone=http://fragrans:123456@localhost:8761/eureka/
eureka.instance.preferIpAddress=true
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}

# 自定义元数据key-value格式
eureka.instance.metadata-map.fragrans=fragrans


# 开启actuator监控
management.endpoints.web.exposure.include = serviceEndPoint,*

# 自定义实例跳转链接,跳转到上面暴露的serviceEndPoint端点
eureka.instance.status-page-url=http://localhost:${server.port}/actuator/serviceEndPoint

1.5 启动服务提供者

启动App类,通过Eureka控制台页面,可以看到服务已经注册到了Eureka
服务注册到Eureka

2 服务消费者

创建服务消费者工程eureka-client-article-service

2.1 添加pom依赖


	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Finchley.SR2</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>


	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

2.2 编写启动类

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

2.3 服务接口类

@RestController
public class ArticleController {

	@Autowired 	
	private RestTemplate restTemplate;  	
	
	@GetMapping("/article/callHello")
	public String callHello2() { 		
	    return restTemplate.getForObject(
			"http://eureka-client-user-service/user/hello", String.class); 	
	}
	
}

2.4 配置文件application.properties

spring.application.name=eureka-client-article-service
server.port=8082

eureka.client.serviceUrl.defaultZone=http://fragrans:123456@localhost:8761/eureka/
eureka.instance.preferIpAddress=true
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}

eureka.instance.metadata-map.fragrans=fragrans
# 自定义实例跳转链接
eureka.instance.status-page-url=https://blog.csdn.net/litlit023/article/details/105906530
eureka.client.healthcheck.enabled=true
eureka.instance.lease-renewal-interval-in-seconds=5 
eureka.instance.lease-expiration-duration-in-seconds=5

2.5 启动消费者App

启动App类后,查看Eureka的控制台页面,可以看到消费者服务器也已经注册到Eureka中,如下图所示:
Eureka控制台页面
通过浏览器请求 请求服务

3. 总结

上述内容主要是在学习《Spring Cloud微服务 入门 实战与进阶》时,做的一些笔记,代码也是根据书中代码,稍微做了修改。
上述代码github地址:
服务提供者代码
服务消费者代码

参考资料:

  1. 《Spring Cloud微服务 入门 实战与进阶》
  2. https://www.springcloud.cc/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud提供了多种方式来获取服务提供者的mapping。 一种常用的方式是使用Eureka来注册服务和发现服务。在服务提供者中,我们可以通过注解`@EnableDiscoveryClient`来将服务注册到Eureka中,并在控制器中使用`@RequestMapping`来定义服务提供者的API接口。然后,在服务消费者中,通过`DiscoveryClient`来获取已注册的服务列表,并使用`RestTemplate`等HTTP客户端来调用服务提供者的API接口。 另一种方式是使用Feign来进行服务间的通信。Feign是一个声明式Web服务客户端,它使用了和Spring MVC相同的注解来定义和生成HTTP请求的接口。在服务消费者中,我们可以使用`@FeignClient`来声明要调用的服务提供者,并使用`@RequestMapping`来定义服务提供者的API接口。然后,通过Feign可以自动将接口的方法映射到服务提供者。 除了上述方式,还可以使用Ribbon和Zuul来实现服务发现和负载均衡。Ribbon是一个负载均衡客户端,它可以与Eureka配合使用,自动将请求发送到已注册的服务提供者上。Zuul是一个API网关,它充当了服务消费者服务提供者之间的中间层,可以通过Zuul来访问服务提供者的mapping。 总的来说,Spring Cloud提供了多种方式来获取服务提供者的mapping,包括使用Eureka和Feign进行服务发现和调用,使用Ribbon进行负载均衡,以及使用Zuul作为API网关等。这些方式可以根据具体的需求和场景来选择和使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值