SpringCloud学习随记

第一个SpringCloud项目,记录一下。

场景:一个人向114电话平台,查询警察局的电话,然后拨打警察局的电话报警。

一、具体代码如下:

1、建立114服务项目 项目名称 first-server-114

    1)、pom.xml

<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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.cjl.springCloud</groupId>
  <artifactId>first-server-114</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			 <artifactId>spring-cloud-dependencies</artifactId>
			 <version>Dalston.SR3</version>
			 <type>pom</type>
            <scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

<dependencies>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-config</artifactId>
	</dependency>
	
	<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka-server</artifactId>
    </dependency>
</dependencies>
</project>



    2)、application.yml

 
server:
 port: 8761
eureka:
 client:
  register-with-eureka: false
  fetch-registry: false



   3)、启动类

@SpringBootApplication
@EnableEurekaServer
public class ServerApp {

	public static void main(String[] args) {
		new SpringApplicationBuilder(ServerApp.class).web(true).run(args);
	}

}



2、建立警察局服务发布者项目 项目名称  first-serverPublisher-police

1)、pom.xml

<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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.cjl.springCloud</groupId>
  <artifactId>first-serverPublisher-police</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Dalston.SR3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
</dependencies>
</project>


2)、application.yml

spring:
 application:
  name: first-serverPublisher-police
 eureka:
  client:
   serviceUrl:
    dafaultZone: http://localhost:8761/eureka/

3)、启动类

@SpringBootApplication
@EnableEurekaClient
public class PublisherApp {

	public static void main(String[] args) {
		new SpringApplicationBuilder(PublisherApp.class).web(true).run(args);
	}
}


4)、centroller

@RestController
public class PoliceContorller {

	@RequestMapping("/call")
	public String call(){
		return "call a police";
	}
}

3、建立个人项目  项目名称first-serviceCaller-person

1)、pom.xml

<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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.cjl.springCloud</groupId>
  <artifactId>first-serviceCaller-person</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
   <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Dalston.SR3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
    
    <!-- 负载均衡框架 -->
     <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-ribbon</artifactId>
    </dependency>
</dependencies>
</project>


2)、application.yml

server:
 port: 8081
spring:
 application:
  name: first-serviceCaller-person
 eureka:
  client:
   serviceUrl:
    dafaultZone: http://localhost:8761/eureka/

3)、启动类

@SpringBootApplication
@EnableEurekaClient
public class PersonApp {

	public static void main(String[] args) {
		new SpringApplicationBuilder(PersonApp.class).web(true).run(args);

	}

}


4)、centroller

@RestController
@Configuration
public class TestContoller {

	/**
	 * 具有调用负载均衡的功能
	 * @return
	 */
	@Bean
	@LoadBalanced
	public RestTemplate getRestTemplate()
	{
		return new RestTemplate();
	}
	
	@RequestMapping("/test")
	public String test()
	{
		RestTemplate tpl = getRestTemplate();
		String str = tpl.getForObject("http://first-serverPublisher-police/call", String.class);
		return str;
	}
}

然后分别启动三个项目

登录:http://localhost:8761/  会看到在Erueka上注册有两个服务


然后输入 http://localhost:8081/test/ 结果如下:



二、项目中报错


1、 first-server-114,启动报错:Cannot execute request on any knownserver Connection refused: connect

原因:eureka服务器把自己当做一个客户端注册到一个服务器上

解决办法:在application.yml中配置一下,禁用这个注册

server:

 port: 8761

eureka:

 client:

  register-with-eureka:false

  fetch-registry: false

切记:false 前的空格,必须有

2、java.net.UnknownHostException: first-serverPublisher-police

报错原因:没有配置@Configuration 注解,所以spring就没法把@bean修改的getRestTemplate()方法加入spring容器

解决办法:在TestContoller类加上该 @Configuration 注解

三、程序结构图解



四、集群架构图









猜你喜欢

转载自blog.csdn.net/xingyuncaojun/article/details/80816136