version版本:

version版本号用处是对于同一接口,具有不同的服务实现。

1、服务端代码:

 1 package com.yas.serviceprovider.impl;
 2 
 3 import com.yas.api.SiteService;
 4 import org.apache.dubbo.config.annotation.Service;
 5 
 6 @Service(version = "default")
 7 public class SiteServiceImpl implements SiteService {
 8     @Override
 9     public String getName(String name) {
10         return "default:" + name;
11     }
12 }
 1 package com.yas.serviceprovider.impl;
 2 
 3 import com.yas.api.SiteService;
 4 import org.apache.dubbo.config.annotation.Service;
 5 
 6 @Service(version = "async")
 7 public class AsyncSiteServiceImpl implements SiteService {
 8     @Override
 9     public String getName(String name) {
10         return "async:" + name;
11     }
12 }

 

启动服务端,可以在监控管理后台看到两个服务:

 

 

2、客户端代码:

 1 package com.example.serviceconsumer.controller;
 2 
 3 import com.yas.api.SiteService;
 4 import org.apache.dubbo.config.annotation.Reference;
 5 import org.springframework.web.bind.annotation.RequestMapping;
 6 import org.springframework.web.bind.annotation.RequestParam;
 7 import org.springframework.web.bind.annotation.RestController;
 8 
 9 @RestController
10 public class SiteController {
11 
12     @Reference(version = "default")
13     SiteService siteService;
14 
15     @RequestMapping("/default")
16     public String getName(@RequestParam("name") String name){
17         return siteService.getName(name);
18     }
19 
20     @Reference(version = "async")
21     SiteService asyncSiteService;
22 
23     @RequestMapping("/async")
24     public String getNameByAsync(@RequestParam("name") String name){
25         return asyncSiteService.getName(name);
26     }
27 }

客户端提供了两个Action,分别调用标注了default的服务和async的服务。

 

3、测试:

使用postman请求:http://localhost:8000/default?name=zhangsan

得到响应为:default:zhangsan

 

使用postman请求:http://localhost:8000/async?name=zhangsan

得到响应为:async:zhangsan

 

实现了从客户端向服务端有指向性的调用。

 

posted on 2021-11-04 07:23  Sempron2800+  阅读(479)  评论(0编辑  收藏  举报