java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringCloud一个模块调用另一个模块的服务

SpringCloud一个模块调用另一个模块的服务实现过程

作者:快起来写bug了

SpringCloud服务调用详解与Hystrix熔断机制介绍,通过创建接口和添加依赖实现不同模块间的服务调用,并探讨了Hystrix在处理容错和熔断中的应用

SpringCloud一个模块调用另一个模块的服务

简介

基于SpringCloud框架搭建的项目,不同模块之间是无法调用各自的服务的,但是经常我们需要使用这样的模式去开发,那么如何实现不同模块之间的服务调用呢?

准备

1.在需要调用其他模块服务的项目中创建一个package包,里面定义三个类,如下图:

在要调用别的模块的模块加依赖

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

在启动类添加注解

@EnableFeignClients   //启用Feign客户端
package com.yuwan.qiniuvideo;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient 
@EnableFeignClients//启用Feign客户端
public class VideoApplication {

	@Bean
	@LoadBalanced//对restTemplate进行负载均衡
	public RestTemplate restTemplate () {
		return new RestTemplate();
	}
	public static void main(String[] args) {
		SpringApplication.run(VideoApplication.class, args);
	}

}


创建接口

MemberClient:

package com.yuwan.qiniuvideo.client;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient(name="member")//book 是service id指明调用的是book这个服务里的接口,再往后所有有关book服务的接口调用都在这里面写
/*Feign 默认就有支持Ribbon 负载均衡,我们只需要不熟多个book微服务就可以了,客户端可以自动轮询选择调用*/
public interface MemberClient {

	@GetMapping("/selectMemberInfo")
	public RestResult getInfo(@RequestParam("id") Long id);
	
	//如果是 postmapping 的话接受参数 就是用@Requestbody 用map 接参  (@Requestbody Map reqest)
}

然后在控制层创建MemberClient就可以调用了

springcloud熔断器Hystrix的具体使用

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文