当前位置 : 主页 > 网络编程 > 其它编程 >

springcloudeureka服务注册和发现

来源:互联网 收集:自由互联 发布时间:2023-07-02
2019独角兽企业重金招聘Python工程师标准 2019独角兽企业重金招聘Python工程师标准>>>     4.0.0     com.eureka.server     eureka_server     1.0.1-SNAPSHOT                 UTF-8       UTF-8   
2019独角兽企业重金招聘Python工程师标准

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

    4.0.0     com.eureka.server     eureka_server     1.0.1-SNAPSHOT                 UTF-8       UTF-8       1.8                        org.springframework.boot         spring-boot-starter-parent         1.5.2.RELEASE                                              org.springframework.cloud             spring-cloud-starter-eureka-server                                            org.springframework.boot             spring-boot-starter-test             test                                                          org.springframework.cloud                 spring-cloud-dependencies                 Dalston.RC1                 pom                 import                                                                            org.springframework.boot                 spring-boot-maven-plugin                                                           spring-milestones             Spring Milestones             https://repo.spring.io/milestone                              false                           

1.2 启动类 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

EnableEurekaServer SpringBootApplication public class EurekaServerApplication {     public static void main(String[] args) {         SpringApplication.run(EurekaServerApplication.class, args);     }     }

1.3 application.yml

server:   port: 8761

eureka:   instance:     hostname: localhost   client:     #由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己     registerWithEureka: false     #由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false     fetchRegistry: false     serviceUrl:       defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

2. 服务提供方

包结构

服务启动类和service业务类同目录结构 com.cloud.eureka.client.ucenter com.cloud.eureka.client.ucenter.biz     UserInfoService.java com.cloud.eureka.client.ucenter.domain     UserDto.java com.cloud.eureka.client.ucenter.network     com.cloud.eureka.client.ucenter.network.request         QueryUserByIdRequest.java     com.cloud.eureka.client.ucenter.network.response         QueryUserByIdResult.java     AutoRequest.java     AutoResult.java com.cloud.eureka.client.ucenter.service     UcenterInfoService.java     UcenterApplicationRunner.java 2 pom.xml 配置

    4.0.0     com.cloud.eureka.client     ucenter     war     1.0.1-SNAPSHOT     ucenter Maven Webapp     http://maven.apache.org                   org.springframework.boot         spring-boot-starter-parent         1.5.2.RELEASE                                                             org.springframework.cloud                 spring-cloud-dependencies                 Camden.SR7                 pom                 import                                                        junit             junit             test                                        org.springframework.cloud             spring-cloud-starter-eureka                                    org.springframework.boot             spring-boot-starter-web                               org.springframework.boot             spring-boot-starter-test             test                                           ucenter     

2.2 application.yml eureka:   client:     serviceUrl:       #注册中心的地址       defaultZone: http://localhost:8761/eureka/ server:   #当前服务端口号   port: 8762 spring:   application:     #当前应用名称     name: ucenter

2.3 启动类

import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.web.bind.annotation.RestController;

SpringBootApplication EnableEurekaClient RestController public class UcenterApplicationRunner {          public static void main(String[] args) {         SpringApplication.run(UcenterApplicationRunner.class, args);     } }

2.4 服务类和实体类 com.cloud.eureka.client.ucenter

import java.io.Serializable;

public class AutoResult implements Serializable {          /** */     private static final long serialVersionUID 8058341569104586241L;

    private String respCode;     private String respMsg;          public String getRespCode() {         return respCode;     }     public void setRespCode(String respCode) {         this.respCode respCode;     }     public String getRespMsg() {         return respMsg;     }     public void setRespMsg(String respMsg) {         this.respMsg respMsg;     } }

import java.io.Serializable;

public class AutoRequest implements Serializable {

    /***  */     private static final long serialVersionUID 53972042882786734L;      }  

import java.util.List;

import com.cloud.eureka.client.ucenter.network.AutoResult;

public class QueryUserByIdResult extends AutoResult {

    /** */     private static final long serialVersionUID -5759747298893119629L;     private T model;     private List modelist;          public T getModel() {         return model;     }     public void setModel(T model) {         this.model model;     }     public List getModelist() {         return modelist;     }     public void setModelist(List modelist) {         this.modelist modelist;     } }

import com.cloud.eureka.client.ucenter.network.AutoRequest;

public class QueryUserByIdRequest extends AutoRequest {

    /***/     private static final long serialVersionUID -5959985997526831945L;

    private Long userId;

    public Long getUserId() {         return userId;     }

    public void setUserId(Long userId) {         this.userId userId;     } }

import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;

import com.cloud.eureka.client.ucenter.biz.UserInfoService; import com.cloud.eureka.client.ucenter.domain.UserDto;

RestController public class UcenterInfoService {

     private final Logger logger LoggerFactory.getLogger(UcenterInfoService.class);            Autowired      private DiscoveryClient discoveryClient;            RequestMapping(value "/hello", method RequestMethod.GET)      public String index() {         ServiceInstance instance discoveryClient.getLocalServiceInstance();         logger.info("ucenter server access index() " this.getClass().getSimpleName() " " Thread.currentThread().getName());         logger.info("/hello, host:" instance.getHost() ", service_id:" instance.getServiceId());         return "Hello World";      }            Autowired      private UserInfoService userInfoService;            RequestMapping(value "/queryUserInfo", method RequestMethod.GET)      public UserDto queryUserInfo (RequestParam("userId") Long userId) {          logger.info("ucenter server access queryUserInfo " this.getClass().getSimpleName() " " Thread.currentThread().getName());          logger.info("恭喜用户 " userId " 你连接成功");          return userInfoService.queryUserInfo();      }

RequestMapping(value "queryUserList", method RequestMethod.POST)      public List queryUserList() {          logger.info("<--- ucenter server access queryUserList " this.getClass().getSimpleName()                  " " Thread.currentThread().getName());          List ulist userInfoService.queryUserList();          return ulist;      }      RequestMapping(value "/queryUserById", method RequestMethod.POST)      public QueryUserByIdResult queryUserUserId(QueryUserByIdRequest request) {          logger.info("<--- ucenter server access queryUserInfo " this.getClass().getSimpleName()                  " " Thread.currentThread().getName());          QueryUserByIdResult result new QueryUserByIdResult();          UserDto dto userInfoService.queryUserInfo();          result.setModel(dto);          result.setRespCode("000");          result.setRespMsg("查询成功");          return result;      } }

import org.springframework.stereotype.Service; import com.cloud.eureka.client.ucenter.domain.UserDto;

Service public class UserInfoService {          public UserDto queryUserInfo() {         UserDto dto new UserDto();         dto.setId(1l);         dto.setUserName("李世民");         dto.setAddress("陕西省咸阳市紫禁城");         System.out.println("恭喜,恭喜你连接成功");         return dto;     }

public List queryUserList() {         UserDto dto new UserDto();         dto.setId(1203586l);         dto.setUserName("李世民");         dto.setAddress("陕西省咸阳市紫禁城");                  UserDto dto1 new UserDto();         dto1.setId(1022589l);         dto1.setUserName("朱江明");         dto1.setAddress("江苏省南京市");                  UserDto dto2 new UserDto();         dto2.setId(1022575l);         dto2.setUserName("刘如海");         dto2.setAddress("湖北省省武汉市市");         List ulist new ArrayList();                  ulist.add(dto);         ulist.add(dto1);         ulist.add(dto2);         return ulist;     } }

import java.io.Serializable;

public class UserDto implements Serializable {          private static final long serialVersionUID 8541673794025166248L;          private Long id;     private String userName;     private String address;

    public Long getId() {         return id;     }

    public void setId(Long id) {         this.id id;     }

    public String getUserName() {         return userName;     }

    public void setUserName(String userName) {         this.userName userName;     }

    public String getAddress() {         return address;     }

    public void setAddress(String address) {         this.address address;     } }

3消费方

包结构 ComponentScan 与EnableEurekaClient 冲突所以启动类与调用服务方服务要在同一级目录否则扫描不到

com.cloud.profile com.cloud.profile.controller     SystemController.java com.cloud.profile.dto     UserDto.java com.cloud.profile.third     ComsumerAppliactionRunner.java     UcenterThirdService.java

pom.xml 

    4.0.0     com.cloud.profile     profile     war     1.0.1-SNAPSHOT     profile Maven Webapp     http://maven.apache.org                   org.springframework.boot         spring-boot-starter-parent         1.5.2.RELEASE                                                             org.springframework.cloud                 spring-cloud-dependencies                 Camden.SR7                 pom                 import                                                        junit             junit             test                               org.springframework.cloud             spring-cloud-starter-eureka                                    org.springframework.boot             spring-boot-starter-web                               com.alibaba             fastjson             1.2.46                              org.springframework.cloud            spring-cloud-starter-feign                            profile     

application.properties

server.port8673 spring.application.nameprofile #注意此项设置为TRUE eureka.client.fetchRegistrytrue eureka.client.serviceUrl.defaultZone: http://localhost:8761/eureka/

eureka.client.registry-fetch-interval-seconds30 eureka.instance.lease-expiration-duration-in-seconds45

import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.feign.EnableFeignClients;

SpringBootApplication EnableEurekaClient EnableFeignClients ComponentScan(basePackages {"com.cloud.profile.controller"}) public class ComsumerAppliactionRunner {     public static void main(String[] args) {         SpringApplication.run(ComsumerAppliactionRunner.class, args);     } }

3.4. 第三方调用服务 import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam;

import com.cloud.profile.dto.UserDto;

服务名不区分大小写  name:远程服务名 即spring.application.name配置的名称

FeignClient(name "UCENTER") public interface UcenterThirdService {

     RequestMapping(value "/hello", method RequestMethod.GET)      public String index();           RequestMapping(value "/queryUserInfo", method RequestMethod.GET)      public UserDto queryUserInfo (RequestParam("userId") Long userId);

    RequestMapping(value "/queryUserList", method RequestMethod.POST)      public List queryUserList();            RequestMapping(value "/queryUserById", method RequestMethod.POST)      public QueryUserByIdResult queryUserById(QueryUserByIdRequest request); }

import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSON; import com.cloud.profile.third.UcenterThirdService;

RestController public class SystemController {     private static Logger logger LoggerFactory.getLogger(SystemController.class);     Autowired     private UcenterThirdService ucenterThirdService;           RequestMapping(value "/queryUserInfo", method RequestMethod.GET)      public String queryUserInfo (RequestParam("userId") Long userId) {                   logger.info("profile response " Thread.currentThread().getName() " " this.getClass().getSimpleName() JSON.toJSONString(ucenterThirdService.queryUserInfo(userId)));;          logger.info(ucenterThirdService.index());          logger.info("profile response " Thread.currentThread().getName() " " this.getClass().getSimpleName() "恭喜用户 " userId " 你连接成功");          return "hello success";      } }

转:https://my.oschina.net/u/2510361/blog/1821171

上一篇:PL/0语言语义分析及中间代码生成
下一篇:没有了
网友评论