一. Eureka server
1.maven(war)项目 springcloud-eurekaserver
pom.xml添加依赖: spring-cloud-starter-eureka-server
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
2.src/main/resources目录新建application.yml
文件配置:
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
3.启动类Main 添加注解:@EnableEurekaServer
@SpringBootApplication
@EnableEurekaServer
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
1.新建maven(war)项目 springboot-sendemail
pom.xml添加依赖:pring-cloud-starter-eureka
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- eureka:服务注册 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
2.src/main/resources目录新建application.properties
文件配置:
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
#服务名不能带"_",多个相同的服务的服务名相同
spring.application.name=sendmail
server.port=8081
#下面的是发送邮件的配置
spring.mail.port=25
spring.mail.host=smtp.qq.com
spring.mail.username=邮箱名
spring.mail.password=密码/授权码
#qq邮箱配置
spring.mail.properties.mail.smtp.starttls.enable=true
3.启动类Main 添加注解:@EnableEurekaClient /EnableDiscoveryClient
@SpringBootApplication
@EnableEurekaClient
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
4.新建contrller类:EmailController
@RestController
public class EmailController {
@Autowired
private JavaMailSender jms;
@PostMapping("/psend")
public String sendMail(@RequestBody Map<String,Object> map){
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setFrom("邮件发送方的邮箱");
mailMessage.setTo(map.get("send_to").toString()); //邮件接收方的邮箱
mailMessage.setSubject(map.get("send_subject").toString()); //邮件主题
mailMessage.setText(map.get("send_content").toString()); //邮件内容
jms.send(mailMessage);
return "发送成功";
}
}
启动server,再运行8081端口的client,修改client的端口为8082再次运行
浏览器访问localhost:8761 即可查看注册的服务sendmail
SENDMAIL n/a (2) (2) UP (2) - user:sendmail:8082 , user:sendmail:8081
服务与服务之间的调用:服务发现
一个项目(程序)中的每个服务都可以当做独立的一部分,可以单独运行和使用,
在多台服务器上部署相同的服务(服务名都相同)
服务启动后自动注册在注册中心,由注册中心来决定调用那台机器上的服务(负载均衡策略)
1.maven(war)项目 springcloud-eurekaserver
pom.xml添加依赖: spring-cloud-starter-eureka-server
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
2.src/main/resources目录新建application.yml
文件配置:
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
3.启动类Main 添加注解:@EnableEurekaServer
@SpringBootApplication
@EnableEurekaServer
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
运行程序:浏览器访问 localhost:8761
二.Eureka Client1.新建maven(war)项目 springboot-sendemail
pom.xml添加依赖:pring-cloud-starter-eureka
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mail:发送邮件 --><dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- eureka:服务注册 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
2.src/main/resources目录新建application.properties
文件配置:
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
#服务名不能带"_",多个相同的服务的服务名相同
spring.application.name=sendmail
server.port=8081
#下面的是发送邮件的配置
spring.mail.port=25
spring.mail.host=smtp.qq.com
spring.mail.username=邮箱名
spring.mail.password=密码/授权码
#qq邮箱配置
spring.mail.properties.mail.smtp.starttls.enable=true
3.启动类Main 添加注解:@EnableEurekaClient /EnableDiscoveryClient
@SpringBootApplication
@EnableEurekaClient
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
4.新建contrller类:EmailController
@RestController
public class EmailController {
@Autowired
private JavaMailSender jms;
@PostMapping("/psend")
public String sendMail(@RequestBody Map<String,Object> map){
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setFrom("邮件发送方的邮箱");
mailMessage.setTo(map.get("send_to").toString()); //邮件接收方的邮箱
mailMessage.setSubject(map.get("send_subject").toString()); //邮件主题
mailMessage.setText(map.get("send_content").toString()); //邮件内容
jms.send(mailMessage);
return "发送成功";
}
}
启动server,再运行8081端口的client,修改client的端口为8082再次运行
浏览器访问localhost:8761 即可查看注册的服务sendmail
SENDMAIL n/a (2) (2) UP (2) - user:sendmail:8082 , user:sendmail:8081
服务与服务之间的调用:服务发现
一个项目(程序)中的每个服务都可以当做独立的一部分,可以单独运行和使用,
在多台服务器上部署相同的服务(服务名都相同)
服务启动后自动注册在注册中心,由注册中心来决定调用那台机器上的服务(负载均衡策略)