news 2026/5/19 10:20:13

Spring Cloud 服务接入到 Apache ShenYu 网关完整案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring Cloud 服务接入到 Apache ShenYu 网关完整案例

Spring Cloud快速开始

本文档演示如何将Spring Cloud服务接入到Apache ShenYu网关。您可以直接在工程下找到本文档的示例代码 。

环境准备

请参考运维部署的内容,选择一种方式启动shenyu-admin。比如,通过 本地部署 启动Apache ShenYu后台管理系统。

启动网关,如果是通过源码的方式,直接运行shenyu-bootstrap中的ShenyuBootstrapApplication

启动顺序

  • 启动shenyu-admin
  • 启动shenyu-bootstrap
  • 启动注册中心,例如shenyu-examples下的eureka项目
  • 配置shenyu-examples-springcloud注册发现
shenyu:discovery:enable:truetype:eurekaserverList:${eureka.client.serviceUrl.defaultZone}registerPath:${spring.application.name}props:nacosNameSpace:ShenyuRegisterCenter

运行shenyu-examples-springcloud

示例项目中我们使用eureka作为Spring Cloud的注册中心。你可以使用本地的eureka,也可以使用示例中提供的应用。

下载 shenyu-examples-eureka 、shenyu-examples-springcloud .

启动eureka服务,运行org.apache.shenyu.examples.eureka.EurekaServerApplicationmain方法启动项目。

启动spring cloud服务,运行org.apache.shenyu.examples.springcloud.ShenyuTestSpringCloudApplicationmain方法启动项目。

成功启动会有如下日志:

2021-02-1014:03:51.301 INFO2860---[main]o.s.s.concurrent.ThreadPoolTaskExecutor:Initializing ExecutorService'applicationTaskExecutor'2021-02-1014:03:51.669 INFO2860---[pool-1-thread-1]o.d.s.client.common.utils.RegisterUtils:springCloud client register success:{"appName":"springCloud-test","context":"/springcloud","path":"/springcloud/order/save","pathDesc":"","rpcType":"springCloud","ruleName":"/springcloud/order/save","enabled":true}2021-02-1014:03:51.676 INFO2860---[pool-1-thread-1]o.d.s.client.common.utils.RegisterUtils:springCloud client register success:{"appName":"springCloud-test","context":"/springcloud","path":"/springcloud/order/path/**","pathDesc":"","rpcType":"springCloud","ruleName":"/springcloud/order/path/**","enabled":true}2021-02-1014:03:51.682 INFO2860---[pool-1-thread-1]o.d.s.client.common.utils.RegisterUtils:springCloud client register success:{"appName":"springCloud-test","context":"/springcloud","path":"/springcloud/order/findById","pathDesc":"","rpcType":"springCloud","ruleName":"/springcloud/order/findById","enabled":true}2021-02-1014:03:51.688 INFO2860---[pool-1-thread-1]o.d.s.client.common.utils.RegisterUtils:springCloud client register success:{"appName":"springCloud-test","context":"/springcloud","path":"/springcloud/order/path/**/name","pathDesc":"","rpcType":"springCloud","ruleName":"/springcloud/order/path/**/name","enabled":true}2021-02-1014:03:51.692 INFO2860---[pool-1-thread-1]o.d.s.client.common.utils.RegisterUtils:springCloud client register success:{"appName":"springCloud-test","context":"/springcloud","path":"/springcloud/test/**","pathDesc":"","rpcType":"springCloud","ruleName":"/springcloud/test/**","enabled":true}2021-02-1014:03:52.806 WARN2860---[main]ockingLoadBalancerClientRibbonWarnLogger:You already have RibbonLoadBalancerClient on your classpath. It will be used by default. As Spring Cloud Ribbon isinmaintenance mode. We recommend switching to BlockingLoadBalancerClient instead. In order to use it,setthe value of`spring.cloud.loadbalancer.ribbon.enabled`to`false`or remove spring-cloud-starter-netflix-ribbon from your project.2021-02-1014:03:52.848 WARN2860---[main]iguration$LoadBalancerCaffeineWarnLogger:Spring Cloud LoadBalancer is currently working with default default cache. You can switch to using Caffeine cache, by adding it to the classpath.2021-02-1014:03:52.921 INFO2860---[main]o.s.c.n.eureka.InstanceInfoFactory:Setting initial instance status as: STARTING2021-02-1014:03:52.949 INFO2860---[main]com.netflix.discovery.DiscoveryClient:Initializing Eurekainregion us-east-12021-02-1014:03:53.006 INFO2860---[main]c.n.d.provider.DiscoveryJerseyProvider:Using JSON encoding codec LegacyJacksonJson2021-02-1014:03:53.006 INFO2860---[main]c.n.d.provider.DiscoveryJerseyProvider:Using JSON decoding codec LegacyJacksonJson2021-02-1014:03:53.110 INFO2860---[main]c.n.d.provider.DiscoveryJerseyProvider:Using XML encoding codec XStreamXml2021-02-1014:03:53.110 INFO2860---[main]c.n.d.provider.DiscoveryJerseyProvider:Using XML decoding codec XStreamXml2021-02-1014:03:53.263 INFO2860---[main]c.n.d.s.r.aws.ConfigClusterResolver:Resolving eureka endpoints via configuration2021-02-1014:03:53.546 INFO2860---[main]com.netflix.discovery.DiscoveryClient:Disable delta property:false2021-02-1014:03:53.546 INFO2860---[main]com.netflix.discovery.DiscoveryClient:Single vip registry refresh property:null2021-02-1014:03:53.547 INFO2860---[main]com.netflix.discovery.DiscoveryClient:Force full registry fetch:false2021-02-1014:03:53.547 INFO2860---[main]com.netflix.discovery.DiscoveryClient:Application is null:false2021-02-1014:03:53.547 INFO2860---[main]com.netflix.discovery.DiscoveryClient:Registered Applications size is zero:true2021-02-1014:03:53.547 INFO2860---[main]com.netflix.discovery.DiscoveryClient:Application version is -1:true2021-02-1014:03:53.547 INFO2860---[main]com.netflix.discovery.DiscoveryClient:Getting all instance registry info from the eureka server2021-02-1014:03:53.754 INFO2860---[main]com.netflix.discovery.DiscoveryClient:The response status is2002021-02-1014:03:53.756 INFO2860---[main]com.netflix.discovery.DiscoveryClient:Starting heartbeat executor: renew interval is:302021-02-1014:03:53.758 INFO2860---[main]c.n.discovery.InstanceInfoReplicator:InstanceInfoReplicator onDemand update allowed rate per min is42021-02-1014:03:53.761 INFO2860---[main]com.netflix.discovery.DiscoveryClient:Discovery Client initialized at timestamp1612937033760with initial instances count:02021-02-1014:03:53.762 INFO2860---[main]o.s.c.n.e.s.EurekaServiceRegistry:Registering application SPRINGCLOUD-TEST with eureka with status UP2021-02-1014:03:53.763 INFO2860---[main]com.netflix.discovery.DiscoveryClient:Sawlocalstatus change event StatusChangeEvent[timestamp=1612937033763,current=UP,previous=STARTING]2021-02-1014:03:53.765 INFO2860---[nfoReplicator-0]com.netflix.discovery.DiscoveryClient:DiscoveryClient_SPRINGCLOUD-TEST/host.docker.internal:springCloud-test:8884: registering service...2021-02-1014:03:53.805 INFO2860---[main]o.s.b.w.embedded.tomcat.TomcatWebServer:Tomcat started on port(s):8884(http)with context path''2021-02-1014:03:53.807 INFO2860---[main].s.c.n.e.s.EurekaAutoServiceRegistration:Updating port to88842021-02-1014:03:53.837 INFO2860---[nfoReplicator-0]com.netflix.discovery.DiscoveryClient:DiscoveryClient_SPRINGCLOUD-TEST/host.docker.internal:springCloud-test:8884 - registration status:2042021-02-1014:03:54.231 INFO2860---[main]o.d.s.e.s.ShenyuTestSpringCloudApplication:Started ShenyuTestSpringCloudApplicationin6.338seconds(JVM runningfor7.361)
  • 启动shenyu-examples-springcloud之后
  • 在admin的系统的divide插件上即可看到刚注册上来的数据

测试Http请求

shenyu-examples-springcloud项目成功启动之后会自动把加@ShenyuSpringMvcClient注解的接口方法注册到网关。

下面使用postman模拟http的方式来请求你的SpringCloud服务:

使用IDEA HTTP Client插件模拟http的方式来请求你的SpringCloud服务[本地访问,不使用shenyu代理]:

使用IDEA HTTP Client插件模拟http的方式来请求你的SpringCloud服务[使用shenyu代理]:


Spring Cloud快速开始 | Apache ShenYu

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/19 8:46:19

Agent Skills标准:让AI Agent按需挂载能力,国内skill0平台已上线

Anthropic推出的Agent Skills是一套可复用指令集,让AI Agent按需挂载能力,解决提示词痛点。Skills具有可组合、可移植、高效特点,已被OpenAI等主流工具兼容。国内特赞团队的skill0平台已聚合423个Skills,支持多款工具直接装配。Sk…

作者头像 李华
网站建设 2026/5/14 14:59:48

专科生必看!千笔,倍受青睐的降AI率工具

在AI技术迅速渗透学术写作领域的当下,越来越多的学生开始借助AI工具提升论文撰写效率。然而,随着查重系统对AI生成内容的识别能力不断增强,如何有效降低AI率和重复率,已成为毕业论文写作中的核心难题。许多学生在使用各类降AI率工…

作者头像 李华
网站建设 2026/5/16 22:50:58

算力租赁选择指南:如何根据应用场景匹配计算资源

人工智能技术当下的快速发展进程里,算力已然成了驱动创新的核心资源,对于多数企业、研究机构以及开发者来讲,自行建造高性能的计算中心,不但成本极其高昂,而且还面临着技术迭代飞快,运维复杂不已&#xff0…

作者头像 李华
网站建设 2026/5/9 0:49:42

dp->单变量记录优化

lc1653dp/* 输入&#xff1a;s "aababbab" 输出&#xff1a;2 */ class Solution { public:int minimumDeletions(string s){int ns.size();vector<vector<int>> dp(n1,vector(2,0));for(int i1;i<n;i){if(s[i-1]a){dp[i][0]dp[i-1][0];dp[i][1]dp[i…

作者头像 李华
网站建设 2026/5/15 17:01:47

深度测评!千笔,MBA论文写作神器

你是否曾为论文选题而苦恼&#xff1f;是否在撰写过程中感到思路混乱、资料不足&#xff1f;又或者&#xff0c;面对查重率和格式问题反复修改却依然无法达到满意效果&#xff1f;MBA论文写作不仅需要扎实的学术功底&#xff0c;更考验时间管理和效率。在无数个深夜里&#xff…

作者头像 李华