Spring Cloud(2):搭建Eureka

Eureka Server的搭建:java

使用IDEA工具web

File->New Project->Spring Initializr->nextspring

Nextapi

 Next->Next建立便可网络

 

修改启动类:app

package org.dreamtech.eureka; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }

 

进行配置:dom

server: port: 8761 eureka: instance: hostname: localhost client: # 声明本身是服务端 register-with-eureka: false fetch-registry: false # 注册中心地址 service-url: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

 

启动后访问:http://localhost:8761/进入管控台ide

因为只有服务端没有客户端,这里显示空工具

 

Eureka Client客户端的搭建:fetch

正常的建立一个SpringMVC项目:

Controller:

package org.dreamtech.product.controller; import org.dreamtech.product.service.ProductService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api/product") public class ProductController { private final ProductService productService; @Autowired public ProductController(ProductService productService) { this.productService = productService; } @RequestMapping("/list") public Object list(){ return productService.getProductList(); } @RequestMapping("/find") public Object findById(@RequestParam("id") int id){ return productService.findById(id); } }

Service:

package org.dreamtech.product.service; import org.dreamtech.product.domain.Product; import java.util.List; public interface ProductService { List<Product> getProductList(); Product findById(int id); }
package org.dreamtech.product.service.impl; import org.dreamtech.product.domain.Product; import org.dreamtech.product.service.ProductService; import org.springframework.stereotype.Service; import java.util.*; @Service public class ProductServiceImpl implements ProductService { // 模拟DAO层操做
    private static final Map<Integer, Product> productDao = new HashMap<>(); static { Product p1 = new Product(1, "iPhone1", 1111, 10); Product p2 = new Product(2, "iPhone2", 2222, 10); Product p3 = new Product(3, "iPhone3", 3333, 10); Product p4 = new Product(4, "iPhone4", 4444, 10); Product p5 = new Product(5, "iPhone5", 5555, 10); Product p6 = new Product(6, "iPhone6", 6666, 10); Product p7 = new Product(6, "iPhone7", 7777, 10); productDao.put(1, p1); productDao.put(2, p2); productDao.put(3, p3); productDao.put(4, p4); productDao.put(5, p5); productDao.put(6, p6); productDao.put(7, p7); } @Override public List<Product> getProductList() { Collection<Product> temp = productDao.values(); return new ArrayList<>(temp); } @Override public Product findById(int id) { return productDao.get(id); } }

商品实体类:

package org.dreamtech.product.domain; import java.io.Serializable; public class Product implements Serializable { //ID
    private int id; //商品名称
    private String name; //商品价格
    private int price; //商品库存
    private int store; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public int getStore() { return store; } public void setStore(int store) { this.store = store; } public Product(int id, String name, int price, int store) { this.id = id; this.name = name; this.price = price; this.store = store; } }

启动项目,访问:http://localhost:8080/api/product/list

响应以下说明成功:

[{
    "id": 1,
    "name": "iPhone1",
    "price": 1111,
    "store": 10 }, { "id": 2,
    "name": "iPhone2",
    "price": 2222,
    "store": 10 }, { "id": 3,
    "name": "iPhone3",
    "price": 3333,
    "store": 10 }, { "id": 4,
    "name": "iPhone4",
    "price": 4444,
    "store": 10 }, { "id": 5,
    "name": "iPhone5",
    "price": 5555,
    "store": 10 }, { "id": 6,
    "name": "iPhone6",
    "price": 6666,
    "store": 10 }, { "id": 6,
    "name": "iPhone7",
    "price": 7777,
    "store": 10 }]

引入Eureka:

server: port: 8771 # 指定注册中心地址 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ # 服务的名称 spring: application: name: product-service

IDEA模拟启动多个服务:

访问:http://localhost:8761/

若是显示如上图,说明搭建成功

 

若是出现这些红字:Eureka的自我保护,因为网络缘由出现没法调用的状况不会剔除服务

好比某我的被困在荒岛上,不能说这我的死了,可能过一段时间他会获救,若是关闭了自我保护,阎王就说你死了,谁都救不了你

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

关闭自我保护:

 server: enable-self-preservation: false
相关文章
相关标签/搜索