spring cloud发现服务

来源:互联网 发布:傲梦青少儿编程招聘 编辑:程序博客网 时间:2024/06/05 18:18

日常开发中,其实服务注册中心,注册服务,发现服务并调用服务都是在不同的服务器,不同的应用中,所以我再写spring cloud注册中心,注册服务,发现服务都是新建应用,而开发中注册服务同时也可能是发现服务方。

一、新建spring boot应用

这里写图片描述

二、修改application.properties

server.port=9090spring.application.name=eureka.client.02eureka.instance.appname=eureka.client.02eureka.client.serviceUrl.defaultZone=http://eureka-server-peer1:8761/eureka/,http://eureka-server-peer2:8762/eureka/,http://eureka-server-peer3:8763/eureka/

为了表明服务的发现方同时也是服务的提供方,配置文件同上节的,修改应用名,和服务实例名即可。
入口文件也同上一节的入口文件。

三、编写服务发现类

为了测试方便,我们使用rest风格的controller触发方法执行,便于观测结果

package com.example.controller;import java.util.List;import javax.websocket.server.PathParam;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.cloud.client.ServiceInstance;import org.springframework.cloud.client.discovery.DiscoveryClient;import org.springframework.util.CollectionUtils;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class DiscoveryController {    @Autowired    private DiscoveryClient discoveryClient;    @RequestMapping("/discovery")    public String getPerson( ){         StringBuilder buf = new StringBuilder();            List<String> serviceIds = discoveryClient.getServices();            if(!CollectionUtils.isEmpty(serviceIds)){                for(String s : serviceIds){                    System.out.println("serviceId:" + s);                    List<ServiceInstance> serviceInstances =  discoveryClient.getInstances(s);                    if(!CollectionUtils.isEmpty(serviceInstances)){                        for(ServiceInstance si:serviceInstances){                            buf.append("["+si.getServiceId() +" host=" +si.getHost()+" port="+si.getPort()+" uri="+si.getUri()+"]");                        }                    }else{                        buf.append("no service.");                    }                }            }            return buf.toString();    }}

四、访问

地址:http://localhost:9090/discovery
这里写图片描述

原创粉丝点击