客服端集成Ribbon
客服端pom.xml添加Ribbon依赖
springcloud-consumer-dept-8082
<!-- 添加负载均衡Ribbon依赖 -->
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-ribbon -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<!-- 加入eureka依赖进行服务注册 -->
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
通过yml配置文件配置ribbon和eureka设置
#服务消费者只需要配置启动端口
server:
port: 8082
# eureka配置
eureka:
client:
register-with-eureka: false # 不想eureka中注册自己,消费不需要注册自己
service-url:
# 服务注册到哪里 打开eureka服务配置以配置中的地址为准
# eureka配置好之后,开启eureka功能注解
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7001.com:7002/eureka,http://eureka7001.com:7003/eureka
服务启动类添加启动eureka注解
springcloud-consumer-dept-8082
package org.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@EnableDiscoveryClient
public class DeptConsumer_8082 {
public static void main(String[] args) {
SpringApplication.run(DeptConsumer_8082.class, args);
}
}
RestTemplate实现负载均衡
通过RestTemplate进行服务调用,所以将它实现负载均衡就可以
package org.springcloud.config;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
// 相当于spring 中的 applicationContext.xml
//指示一个类声明一个或多个@Bean方法,并且可以由Spring容器处理,以便在运行时为这些bean生成BeanDefinition和服务请求
@Configuration
public class ConfigBean {
// 原来是<bean></bean>
// 现在使用spring注解
/**
* RestTemplate中没有@Bean,容器中没有该类,需要new一个新类,
* 所以需要手动配置一个bean,这样容器中就有改类,就可以使用@Autowired进行注入 也就是说通过@Bean 将该类交给spring进行管理及ioc
*/
// 配置负载均衡实现,现在是通过RestTemplate进行调用所以将它实现负载均衡就可以
@Bean
@LoadBalanced // ribbon基于客服端实现负载均衡
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
通过ribbon实现远程调用时,不应该是指定的url
DeptConsumerController