3.spring cloud + zookeeper注册中心 + Feign调用案例
生活随笔
收集整理的這篇文章主要介紹了
3.spring cloud + zookeeper注册中心 + Feign调用案例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
3.spring cloud + zookeeper注冊中心 + Feign調用案例
3.1.pom.xml定義
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.7.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.xxx.xxxxxxx</groupId><artifactId>feign-test</artifactId><version>3.7.1</version><name>feign-test</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>Finchley.SR2</spring-cloud.version><zookeeper.version>3.4.6</zookeeper.version><curator.version>4.0.0</curator.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zookeeper-discovery</artifactId><!--<version>2.2.0.RELEASE</version>--></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><!--<version>2.2.1.RELEASE</version>--></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>${curator.version}</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>${curator.version}</version></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>${zookeeper.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version><!--<scope>provided</scope>--></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url></repository><repository><id>mvnrepository</id><name>mvnrepository</name><url>https://mvnrepository.com/artifact/</url></repository><repository><id>maven</id><name>maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url></repository></repositories> </project>3.1.1.resources中定義application.yml
server:port: 9988spring:application:name: feign-testcloud:zookeeper:connect-string: xxx-test2.dg.xxx:2181discovery:register: trueenabled: trueinstance-id: 1root: /xxxxx/dist/services3.1.2.啟動類編寫
package com.xxx;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.openfeign.EnableFeignClients;@SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class FeignTestMain {private static final Logger LOG = LoggerFactory.getLogger(FeignTestMain.class);public static void main(String[] args) {LOG.info("starting collector ......"); // new SpringApplicationBuilder().sources(FeignTestMain.class).run(args);SpringApplication.run(FeignTestMain.class,args);}}3.1.3.編寫Feign的接口(調用別的工程時)
package com.xxx.xxxxxxx.collector.client;import com.xxx.xxxxxxx.collector.domain.HttpResult; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam;/*** @author tuzuoquan* @date 2021/8/31 18:46*/ @FeignClient("zk-collector-provider") public interface CollectorApi {@PostMapping("/api/v1/collector/alarm/meta/job/{jobId}/init")HttpResult<String> initAlarmMeta(@PathVariable(name = "jobId") String jobId,@RequestParam String userId);}3.1.4.編寫Controller
package com.xxx.xxxxxxx.collector.controller;import com.xxx.xxxxxxx.collector.client.CollectorApi; import com.xxx.xxxxxxx.collector.domain.HttpResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;@RestController @RequestMapping("/test") public class TestController {private static final Logger LOG = LoggerFactory.getLogger(TestController.class);@AutowiredCollectorApi collectorApi;@GetMapping("/welcome")public String welcome(String jobId, String userId) {LOG.info("collectorApi.initAlarmMeta start ..... ");HttpResult<String> result = collectorApi.initAlarmMeta(jobId, userId);LOG.info("collectorApi.initAlarmMeta end ..... ");return "code:" + result.getCode() + ", msg:" + result.getMsg();}}3.1.5.編寫HttpResult
package com.xxx.xxxxxxx.collector.domain;import lombok.AllArgsConstructor; import lombok.Data;@Data @AllArgsConstructor public class HttpResult<T> {private int code;private String msg;private T result;public boolean isSuccess(){return code == 200;}public static <T> HttpResult<T> success(T data){return new HttpResult<>(200, null, data);} }3.1.6.啟動時使用外部配置application.yml,命令:
java -jar feign-test-3.7.1.jar --spring.config.location=application.yml后臺靜默執行方式:
nohup java -jar feign-test-3.7.1.jar --spring.config.location=application.yml > feign-test.log 2>&1 &3.1.7.使用curl做請求
Get 請求案例
curl -X GET 'http://127.0.0.1:9988/test/welcome?jobId=10252&userId=admin.mammut@163.com'Post請求案例
curl -H "Content-Type:application/json" -X POST --data '{"monitorDBUrl":"xxx-tsdb0.dg.xxx:8091","type":0}' http://xxxxx-dev.bdms.xxx.com/web/v2/xxx/bootstrap/item/cluster/monitor/config?isDevelop=true總結
以上是生活随笔為你收集整理的3.spring cloud + zookeeper注册中心 + Feign调用案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 私行专享是什么意思
- 下一篇: 水滴筹筹款金额没有达到怎么办