1、新建一个springboot 1.x项目【2.x之上有bug,就没测试】

就是新建一个注册中心

2、等下载完,注册中心配置application.yml

server:
port: 8761
eureka:
instance:
hostname: server #eureka实例的主机名
client:
register-with-eureka: false #不能把自己注册到eureka上
fetch-registry: false #不从eureka上来获取服务的注册信息
service-url:
defalutZone: http://localhost:8761/eureka/

3、注册中心主程序添加@EnableEurekaServer【org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;】

4、运行注册中心

5、访问http://localhost:8761/

为了方便测试,这里把注册中心打包成可运行的jar,单独运行,不占用idea

6、新建一个服务提供者

7、服务提供者的application.yml

server:
port: 8001 spring:
application:
name: ticket eureka:
instance:
prefer-ip-address: true #注册服务的时候使用服务的ip地址
client:
service-url:
defalutZone: http://localhost:8761/eureka/

8、写一个service【TicketService.java】

package com.xiaostudy.springcloud_service.service;

import org.springframework.stereotype.Service;

@Service
public class TicketService { public String getTicket() {
return "服务提供者。。。";
}
}

9、写一个controller【TicketController.java】

package com.xiaostudy.springcloud_service.web.controller;

import com.xiaostudy.springcloud_service.service.TicketService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class TicketController { @Autowired
TicketService ticketService; @GetMapping("/ticket")
public String getTicket() {
return ticketService.getTicket();
}
}

10、运行服务提供者

11、访问http://localhost:8001/ticket

正常,也可以去注册中心看

同样,为了方便测试,把服务也打包成jar,单独运行,不占用idea

12、新建一个消费者

13、消费者的application.yml

server:
port: 8200 spring:
application:
name: user eureka:
instance:
prefer-ip-address: true #注册服务的时候使用服务的ip地址
client:
service-url:
defalutZone: http://localhost:8761/eureka/

14、消费者主程序添加

//开启发现服务功能
@EnableDiscoveryClient

再添加

@LoadBalanced//使用负载均衡机制   一定要加@LoadBalanced,不让报连接超时
@Bean//帮我们发送http请求
public RestTemplate restTemplate() {
return new RestTemplate();
}

15、消费者新建一个controller【UserController.java】

package com.xiaostudy.springcloud_consumers.web.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate; @RestController
public class UserController { @Autowired
RestTemplate restTemplate; @GetMapping("/get")
public String getTicket() {
String s = restTemplate.getForObject("http://TICKET/ticket", String.class);
return "获取了:" + s;
}
}

16、消费者运行

已经启动了

17、访问http://localhost:8200/get

注册中心上也可以看到

到此,一个简单springcloud例子完成


springboot2.1.6用以上方法也可行。

springboot2.x以上可能后面测试

springcloud【基于springboot1.x】的简单发布服务和使用的更多相关文章

  1. 基于 APIGateway 打造生产级别的 Knative 服务

    作者 | 阿里云智能事业群高级开发工程师  元毅 导读:在实际应用中,通过 APIGateway(即 API 网关),可以为内部服务提供保护.提供统一的鉴权管理.限流.监控等能力,开发人员只需要关注内 ...

  2. JAX-WS 学习一:基于java的最简单的WebService服务

    JAVA 1.6 之后,自带的JAX-WS API,这使得我们可以很方便的开发一个基于Java的WebService服务. 基于JAVA的WebService 服务 1.创建服务端WebService ...

  3. 最简单的基于librtmp的示例:发布H.264(H.264通过RTMP发布)

    ===================================================== 最简单的基于libRTMP的示例系列文章列表: 最简单的基于librtmp的示例:接收(RT ...

  4. 最简单的基于librtmp的示例:发布(FLV通过RTMP发布)

    ===================================================== 最简单的基于libRTMP的示例系列文章列表: 最简单的基于librtmp的示例:接收(RT ...

  5. .net平台 基于 XMPP协议的即时消息服务端简单实现

    .net平台 基于 XMPP协议的即时消息服务端简单实现 昨天抽空学习了一下XMPP,在网上找了好久,中文的资料太少了所以做这个简单的例子,今天才完成.公司也正在准备开发基于XMPP协议的即时通讯工具 ...

  6. 基于ZooKeeper实现简单的服务注册于发现

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/Shaun_luotao/article/ ...

  7. 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载

    一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.N ...

  8. 分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载

    一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已经完成,在通常的情况下,开发人中都是在使用者B所使用 ...

  9. 基于.NET Socket Tcp的发布-订阅框架

    基于.NET Socket Tcp的发布-订阅框架 一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已 ...

随机推荐

  1. typescript 错误记录

    经常遇到 typescript 的编译错误,虽然可以绕过去,不过既然采用了,还是解决问题,了解其中的思想比较重要. 一般遇到错误码 error TS2304: Cannot find name ... ...

  2. stat函数

    int lstat(const char *path,struct stat*buf) 当文件是一个符号链接时,lstat返回的是该符号链接本身的信息,而stat返回的是该链接指向的文件的信息. st ...

  3. 转载:scala中的implicit

    掌握implicit的用法是阅读Spark源码的基础,也是学习Scala其它的开源框架的关键,implicit 可分为: 隐式参数 隐式转换类型 隐式调用函数 1.隐式参数 当我们在定义方法时,可以把 ...

  4. vue-cli3配置多页面入口

    假如要单独将登陆页面当成一个项目入口文件: 第一步:创建一个登陆页面的文件 在项目public文件夹下创建一个login.html,其实就是将index.html复制一份,将title改一下: 第二步 ...

  5. STP生成树详解图

  6. [Web前端] WEEX、React-Native开发App心得 (转载)

    转自: https://www.jianshu.com/p/139c5074ae5d 2018 JS状态报告: https://2018.stateofjs.com/mobile-and-deskto ...

  7. useReducer代替Redux小案例-1(七)

    使用useContext和useReducer是可以实现类似Redux的效果,并且一些简单的个人项目,完全可以用下面的方案代替Redux,这种做法要比Redux简单一些.因为useContext和us ...

  8. useEffect 实现 componentWillUnmount生命周期函数(四)

    在写React应用的时候,在组件中经常用到componentWillUnmount生命周期函数(组件将要被卸载时执行).比如我们的定时器要清空,避免发生内存泄漏;比如登录状态要取消掉,避免下次进入信息 ...

  9. node依赖包格式区别

    UMD:UMD 版本可以通过 <script> 标签直接用在浏览器中.jsDelivr CDN 的 https://cdn.jsdelivr.net/npm/vue 默认文件就是运行时 + ...

  10. 005 DOM02

    在上一篇DOM的基础上,继续案例的实践. 一:案例 1.禁用文本框 <!DOCTYPE html> <html lang="en"> <head> ...