前一篇实现了服务注册中心的搭建,并提供服务注册到注册中心上。在之前的基础上,实现服务消费。
一、相关介绍
1、RestTemplate工具
2、@LoadBalanced注解:开启客户端负载均衡
二、ribbon示例:
先启动eureka-service注册中心,再将eureka-client修改端口号为2222、2223分别启动两次,可以看到服务提供者注册了两个端口2222、2223,
下面实现ribbon的负载均衡消费:
1、pom:
4.0.0
com.demo.cloud
myspringcloud-eureka-ribbon
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
1.5.9.RELEASE
UTF-8
UTF-8
1.8
Edgware.RELEASE
org.springframework.cloud
spring-cloud-starter-eureka
org.springframework.cloud
spring-cloud-starter-ribbon
服务器托管网 com.demo.cloud.api
myspringcloud-api
1.0-SNAPSHOT
system
D:/my-demo-code/codecloud/myspringcloud-api/target/my-api.jar
org.springframework.boot
spring-boot-starter-web
commons-collections
commons-collections
3.2.1
commons-lang
commons-lang
2.5
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
spring-milestones
Spring Milestones
https://repo.spring.io/libs-milestone
false
2、application配置文件:
server.port=3333
server.context-path=/myTest
spring.application.name=my-test
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
3、启动类:
package com.demo.cloud;
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.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@EnableDiscoveryClient
public class MyConsumerApplication {
@Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
public static void main(String args[]){
SpringApplication.run(MyConsumerApplication.class,args);
}
}
4、controller:
package com.demo.cloud.controller;
import com.demo.cloud.dto.AuthorityDTO;
import com.demo.cloud.dto.UserDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.nio.ch服务器托管网arset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
@RequestMapping("/user")
@RestController
public class UserApiController {
@Autowired
private RestTemplate restTemplate;
//注意这里服务提供者的名称与注册中心上保持一致大写了,与代码中名称一致小写也可以
private static final String REST_URL_PREFIX="http://MY-SERVICE/myService";
@RequestMapping("/findByUserName")
public UserDTO findByUserName(String username){
HashMap paramMap = new HashMap();
paramMap.put("username",username);
UserDTO userDTO = restTemplate.getForObject(REST_URL_PREFIX+"/user/findByUserName?username={username}",UserDTO.class,paramMap);
return userDTO;
}
@RequestMapping("/getAllUsers")
public List getAllUsers(){
List userDTOS = restTemplate.getForObject(REST_URL_PREFIX+"/user/getAllUsers",
List.class);
return userDTOS;
}
@RequestMapping("/addUser")
public void addUser1(@RequestBody UserDTO userDTO){
restTemplate.postForEntity(REST_URL_PREFIX+"/user/addUser",userDTO,Boolean.class);
}
}
启动后刷新注册中心,看到消费者也注册上去了
控制台可以看到ribbon输出了当前客户端维护的my-service服务提供者的情况,包括各个实例的请求总数、上一次连接的信息、总的请求失败数量等等
测试:
多次访问查看服务提供者日志,可以看到两个节点都有访问
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
Apache Kafka 是一个分布式流处理平台. 这到底意味着什么呢? 我们知道流处理平台有以下三种特性: 可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。 可以储存流式的记录,并且有较好的容错性。 可以在流式记录产生时就进行处理。 K…