3.1 提供者接入Soul
3.1.1 pom
3.1.2 Controller
与之前不同的是,这里我们会在Controller增加一个注解,@SoulSpringMvcClient,标注其注册成为一个SoulSpringMvcClient对象。这里有两种方式,一种是全局,一种是下面示例文件的局部,我会在 3.1.3 配置文件具体讲解二者实现上的差异性。
其中@SoulSpringMvcClient(path = "/consumer/** "), ** 标识允许访问:consumer路径下全部,如果在当前Controller中,你只想部分暴露,那么更正为:
●删除Controller上的:SoulSpringMvcClient(path = "/consumer/** ")
●在对应需要暴露的接口上,加上全路径,如: @SoulSpringMvcClien(path = "/consumer/getUserById")
3.1.3 配置文件
说明:
●http:标注这里协议是Http,同样还有(dubbo等)
●adminUrl:对应soul-admin启动的应用地址,端口
●contextPath:对应注册进Soul的路由前缀(即我们后续通过网关访问的限制名,多个应用应不同)
●appName:对应的应用名称,不配置的话,会默认取 dubbo配置中application 中的名称
●full:true则表示代理全部,全局允许访问,权限很大;false表示非全局,只访问有注解的地方(推荐)
●port:当前应用的启动端口,并非soul-admin或网关,需保持一直
另外,如果你在 application.yaml(properties) 中配置了context-path,请删除,这个配置对于Soul而言是无感知的,即你的配置文件中不应出现下面的servlet配置:
如果你在这里配置的:full是false,那么对应3.1.2章节就无需调整,如果是true,直接3.1.2关于SoulPringMvcClient相关注解即可。
3.2 消费者接入Soul
消费者相关配置,和提供者是一致的,这里不再赘述,直接贴出相关代码。
3.2.1 pom
3.2.2 Controller
3.2.3 配置文件
说明:
●这里同时暴露出去了dubbo,http两套协议,dubbo对应的就是我们提供在Service层的代码,其变更很小,如下,只是增加了一个注解:@SoulDubboClient
@suf4j
@Service
@COmponent
publicclassUserserviceImplmplemensseservice
@souLDubbocLiet(ath"id"查找
@override
publicUserfindById(intid)
if(idKO)
log.info("非法请求,ID:伊",id);
returnnull;
user-newUser(1,"youzha",L,wDate();
Useru
Log.info("提供者返回数据:伊",user.tostringO));
returnuser;
●dubbo,http提供的contextPath的路由前缀,需要保持不同,同时全局唯一(即不能和其他应用一致)
3.3 验证
前提:启动了zookeeper,启动了MySQL。
3.3.1 启动soul-admin
直接启动相关Application即可,登陆控制台查看:localhost:9093,用户名/密码:admin/123456。
成功之后,查看插件,注意这里确保二者开启,且配置项和我吻合:
G出时灵
Soul阿关官理
燃和欲君
用产管理
2018-06-141017735
关旺
天编
2020-07-0211:0049
其中:divide
插件
插件:
divide
配置:
*角色:
系统
状态:
取消
确定
zk:
{"register":"zookeeper://127.0.0.1:2181"}
插件
*插件:
dubbo
''register:"zookeeper//127.0.0.1:2181
*配置:
角色:
系统
状态:
确定
取消
3.3.2 启动soul-boostrap
直接启动相关Application即可。
3.3.3 启动soul-provider
直接启动相关Application即可,出现下面的日志则表示注册成功:
2020070610:04:05514INF08732
Lhttpcligntregistersuccess
mainJscSISpringMcclientBeanPostProcessor
C"appName":"provider",'context":"/provider","at
"host":172.16.30.188."port:90
path":"/provider/provider/*"pathbesc:"cype"t
"rulename:"/provider/provider/***enablue
2020-07-0610:04:05.526INF08732---
Mainl..a.ibboontiininostrocessoThepropertiesofbeannae
[beanproperty'name',beanproperty'id
dubbo-consumer]havebeenbindingbyvalues:[be
2029070610:04:05.528INF08732--
hain.aeia
dhbbocotizeeistyotoeninerye
2020-070610:04:05.531INF08732--
pl.faaofizuinntooio
main.+
.dubbo.config.otocolconfigohvebenindingyluey
rty'name'
2020-07-0610:04:05.837INFO8732
stor:InitializingExecutorSerice
p.5.5.cocurrent.ThredPooTkExecuto
main]
'applicationlaskExecutor'
2020-07-0610:04:06157INFO8732---
endpoint(S)beneathbasepath
Exposing
mainjo.s.b.a.e.web.EndpointlinksResolver
'/actuator'
dubboclientregistersuccess0
291007010:04:036
IndById""pathbesc:"ID查找""cpclype":"dubbo",.
apwdateHrowdenyodmt/
"spcExt":"0"'enabled":true]
INFO8732
127.0.0.1:2181]oqg.oteczklentkenea
2020070610:04:06576
:startingzkciienteventthread.
2020-07-0610:04:06.575
INFO8732
clientenvironment:zookeeperversion-3.4
[clientconnector]org.apache.7ookeeper.7ookeeper
3.3.4 启动soul-consumer
直接启动相关Application即可,出现下面的日志则表示注册成功:
lS.c.S.i.Spingcintenostrocessortitcce
202007-0610:05:59.986INFO6264
mainLs.c
[appName":"consumr."context":"/consumer"at
pptht:/eonsuconusteptpecYyphtt,
"ruleName":"consumer/consumer/**",
"enabled":true
注意:
3.3.3,3.3.4启动完成之后,查看soul-admin的网页管理端,应该出现下图:
G+
Soul关管理
透择启列表
操作
快妆铺
净安热
开白
开
博妆别
特改
Gl出变录
Soul关管理
进择日用录
达择蟹想可列表
惠雨时5
快被费
梅改
2020-07-04135446
3.3.5 验证
此时直接通过自身IP访问消费者,地址:http://localhost:9092/consumer/getUserById?id=1,查看日志:
消费者:
172.16.36.188].acom
2020070610:06:00.932
InitializingSpringDispatcherSere
INF06264
dispatcherSerylet'
2020070610:06:00.933INFO6264
172.16.30.188o.Swbserlet.Dispatchsle
InitializingSeryletdispatcherSerylet
2020-07-0610:06:00.943INFO6264
172.16.30.188.wbseret.Diatchr
initializationin10ms
2020070610:06:31950INF06264
[nio-9092-exec-5]c.y.dubbo.controller.consumeonroller
id-1
消费者获取用户,信息为:user(id-l,nameyouzha,
202007-0610:06:32.190INF06264-
---[n10-9092-exec-5]
cy.dubbo.controller.ConsumerController
nge-lbirthbayMonJu1061:6:2
提供者:
o.a.c.c.c.lTomcatj.[localhostJ.[]
InitializingSpringDispatcheSerlet
172.16.30.188
2020-07-0610:04:07.001
INFO8732
dispatcherSerylet'
D-172.16.30188]
InitializingeredipatcherSeret
2020-07-0610:04:07002INFO8732
o.5.web.serylet.DispatcherSerlet
D172.16.30.188]o.5.web.serlet.Dispatcherserlet
INFO8732
2020-07-0610:04:07026
Completedinitializationin18ms
cy.dubbo.service.impl.userserviceImpl
提供者返回效据:user(id-l,nameouzhaae
:20880-thread-2]
2020-07-0610:06:32.175INFO8732
2020)
birthDayMonJul0610:06:32CST
通过网关访问消费者,地址:http://localhost:9094/consumer/consumer/getUserById?id=1,查看日志:
消费者:
]cy.dubbo.controller.Consumeonrole
2020-07-0610:07:48.947INF06264
nio-9092-exec-6
消费者获取用户,信息为:user(id-l,name-youzha,
2020-07-0610:07:48.951INF06264
[nio-9092-exec-61
c.y.dubbo.controller.Consumercontroller
nge-lbirthDayMonul61:07:48CT2
2020)
提供者:
提供者返回数据:user(id-l,name-youzha,
]cy.dubbo,service.impluserserviceimpl
2020-07-0610:07:48.950INFO8732
20880-thread-
age-1,
birthDayMonJul0610:07:48CST020)
直接通过自身IP访问提供者,地址:http://localhost:9091/provider/hello?id=-1
通过网关访问提供者,地址:http://localhost:9094/provider/provider/hello?id=-1
Chrome POST验证provider的dubbo接口
JavaScript
运行代码复制代码
1
2
3
4
5
fetch(new Request('http://localhost:9094/provider/provider-youzha/findById',{
method:'POST',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
body:"id=1"
})).then((resp)=>{console.log(resp)})
注意:
●通过网关访问,其地址为boostrap对应的:ip+端口
●访问地址需要加上路由前缀,即配置文件中 soul 模块中的contextPath
●如果你的项目和soul不部署在同一服务器,请在你的配置文件中追加上该配置(以你实际部署机器IP为准),保证Soul能管理你的服务
○soul.http.host=168.10.54.115
3.4 完整代码
Dubbo_Soul.rar(32 KB)
zookeeper.rar(70.7 MB)
redis.rar(4 MB)
Soul.rar(8.2 MB)
若有收获,就点个赞吧