1.开启通信日志-打印日志
1.1 日志级别
1.2 application.yml
eureka:
client:
service-url:
defaultZone:
http://localhost:8761/eureka
spring:
application:
name: member-service
#定义某一个微服务 客户端负载均衡方式
book-service:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
#定义本系统logback最低的打印级别
logging:
level:
ROOT: INFO
#调用微服务时打印的日志级别 以下表示在client包下调用的都是debug 级别
com.itlaoqi.springcloud.memberserviceopenfeign.client.*: debug
feign:
client:
config:
# 默认
default:
loggerLevel: HEADERS
connectTimeout: 15000 #客户端向微服务发起连接的最长等待时间
readTimeout: 15000 #连接后,等待响应返回的最长时间
# 具体到某个微服务的级别
book-service:
loggerLevel: BASIC
connectTimeout: 5000
readTimeout: 5000
debug: true
2. 通信方式变更(okhttp/httpclient)
2.1 pom.xml 引入包
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-okhttp</artifactId>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
2.2 application.yml 启用
# 只能启用一个
feign:
okhttp:
enabled: false
httpclient:
enabled: true
client:
config:
# 默认
default:
loggerLevel: HEADERS
connectTimeout: 15000 #客户端向微服务发起连接的最长等待时间
readTimeout: 15000 #连接后,等待响应返回的最长时间
# 具体到某个微服务的级别
book-service:
loggerLevel: BASIC
connectTimeout: 5000
readTimeout: 5000
3. openFeign GET /POST请求
3.1 服务提供者(图书服务)
package com.itlaoqi.springcloud.bookservice.controller;
import com.itlaoqi.springcloud.bookservice.entity.Book;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
@RestController
public class BookController {
@PostMapping("/create")
public String createBook(@RequestBody Book book){
return book.getName() + "创建成功";
}
@GetMapping("/search")
public List<Book> search(Book book){
List list = new ArrayList();
if(book.getSn().equals("1111") && book.getName().equals("x")){
list.add(new Book("1111", "XXXX", ""));
}
return list;
}
}
3.2 消费者(会员服务)
MemberController.java
@Controller
public class MemberController {
@Resource
BookService bookService;
@GetMapping("/createBook")
@ResponseBody
public String compensate(){
Book book = new Book();
book.setName("赔偿图书");
book.setSn("5555");
String result = bookService.createBook(book);
return result;
}
@GetMapping("/search")
@ResponseBody
public List<Book> search(){
//通过map 进行信息传递
Map param = new HashMap();
param.put("sn", "1111");
param.put("name", "x");
List<Book> list = bookService.search(param);
return list;
}
}
client.BookService.java
注意:GET 需要RequestParam 注解,并且需要传递Map
POST 需要加 RequestBody 注解
package com.itlaoqi.springcloud.memberserviceopenfeign.client;
import com.itlaoqi.springcloud.memberserviceopenfeign.entity.Book;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
@FeignClient(name="book-service")
public interface BookService {
@PostMapping("/create")
public String createBook(@RequestBody Book book);
// 注意为map 进行get 传递
@GetMapping("/search")
public List<Book> search(@RequestParam Map book);
}