Eureka
一、搭建Eureka单机版或者集群版
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud2020</artifactId>
<groupId>com.wlq</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-eureka-server7002</artifactId>
<dependencies>
<!--eureka-server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!--引入自己定义的api调用包,可以使用Payment支付Entity-->
<dependency>
<groupId>com.wlq</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
</project>
<2>新建application.yml文件
server:
port: 7001
eureka:
instance:
hostname: localhost
#hostname: localhost
client:
#false表示不向注册中心中注册自己,注册
register-with-eureka: false
#false表示自己就是注册中心,我的职责就是维护服务实例,并不需要去检索服务,拿
fetch-registry: false
service-url:
#单机版
#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
#defaultZone: http://activate.navicat.com:7001/eureka/
#设置与Eureka Server之间交互的地址,查询服务和注册服务都需要依赖这个地址
defaultZone: http://activate.navicat.com:7002/eureka/ #集群版,指向其他Eureka
#server:
#关闭Eureka自我保护机制,保证不可用服务被及时剔除
#enable-self-preservation: false
#eviction-interval-timer-in-ms: 2000
server:
port: 7002
eureka:
instance:
hostname: activate.navicat.com
#hostname: localhost
client:
#false表示不向注册中心中注册自己,注册
register-with-eureka: false
#false表示自己就是注册中心,我的职责就是维护服务实例,并不需要去检索服务,拿
fetch-registry: false
service-url:
#单机版
#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
#设置与Eureka Server之间交互的地址,查询服务和注册服务都需要依赖这个地址
defaultZone: http://localhost:7001/eureka/ #集群版,指向其他Eureka
#server:
#关闭Eureka自我保护机制,保证不可用服务被及时剔除
#enable-self-preservation: false
#eviction-interval-timer-in-ms: 2000
<3>新建applicationMain启动类
<4>编写业务类
二、提供者
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud2020</artifactId>
<groupId>com.wlq</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-provider-payment8001</artifactId>
<dependencies>
<!-- 包含了sleuth+zipkin -->
<!--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>-->
<!--引入自己定义的api调用包,可以使用Payment支付Entity-->
<dependency>
<groupId>com.wlq</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- eureka-client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
</project>
<2>新建application.yml文件
server:
port: 8001
spring:
application:
name: cloud-payment-service
datasource:
type: com.alibaba.druid.pool.DruidDataSource #当前数据源操作类型
driver-class-name: com.mysql.cj.jdbc.Driver #mysql驱动包
url: jdbc:mysql://localhost:3306/db2019?connectTimeout=1000&socketTimeout=300000&autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&allowMultiQueries=true
username: root
password: root
mybatis:
mapperlocations: classpath:mapper/*.xml
type-aliases-package: com.springcloud.entities #所有Entity别名类所在包
eureka:
client:
#false表示不向注册中心中注册自己,注册
register-with-eureka: true
#false表示自己就是注册中心,我的职责就是维护服务实例,并不需要去检索服务,拿
fetch-registry: true
service-url:
#defaultZone: http://localhost:7001/eureka #单机版
defaultZone: http://localhost:7001/eureka/,http://activate.navicat.com:7002/eureka/ #集群版
#instance:
#instance-id: payment8001 #修改Status名称
#prefer-ip-address: true #访问路径可以显示IP地址
server:
port: 8002
多个相同的提供着,只需要修改端口号就可以了
<3>新建applicationMain启动类
<4>编写业务类
三、消费者
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud2020</artifactId>
<groupId>com.wlq</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-consumer-order80</artifactId>
<dependencies>
<!-- 包含了sleuth+zipkin -->
<!--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>-->
<!-- eureka-client -->
<!-- 自带spring-cloud-starter-ribbon -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--引入自己定义的api调用包,可以使用Payment支付Entity-->
<dependency>
<groupId>com.wlq</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
<2>新建application.yml文件
server:
port: 80
spring:
application:
name: cloud-consumer-order
eureka:
client:
#false表示不向注册中心中注册自己,注册
register-with-eureka: true
#false表示自己就是注册中心,我的职责就是维护服务实例,并不需要去检索服务,拿
fetch-registry: true
service-url:
#defaultZone: http://localhost:7001/eureka #单机版
defaultZone: http://localhost:7001/eureka/,http://activate.navicat.com:7002/eureka/ #集群版
#instance:
#instance-id: payment8001 #修改Status名称
#prefer-ip-address: true #访问路径可以显示IP地址
<3>新建applicationMain启动类
<4>编写业务类
@RestController
@Slf4j
public class OrderController {
public static final String PAYMENT_URL="http://localhost:8001";
// 通过在eureka上注册过的微服务名称调用
public static final String PAYMENT_SRV = "http://CLOUD-PAYMENT-SERVICE";
@Resource
private RestTemplate restTemplate;
@PostMapping("/order/create")
public CommonResult creat(@RequestBody Payment payment) {
return restTemplate.postForObject(PAYMENT_SRV+"/payment/create",payment,CommonResult.class);
}
@GetMapping("/order/get/{id}")
public CommonResult get(@PathVariable("id") long id) {
return restTemplate.getForObject(PAYMENT_SRV+"/payment/get/"+id,CommonResult.class);
}
}
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced //轮询
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}