spring cloud alibaba微服务原理与实战_Dubbo Spring Cloud 之 HTTP 实战

3993ffdeb45f4ad4b17e7841c0e71700.png

上一篇文章《Dubbo 与 Spring Cloud 完美结合》我们介绍了Dubbo Spring Cloud的基本使用,使用的服务中心为Spring Cloud Alibaba提供的Nacos,Dubbo内部提供了基于Dubbo的RPC调用,同时,Dubbo Spring Cloud在整合了Spring Cloud之后,可以直接提供HTTP接口,同Spring Cloud无缝衔接,直接支持Feign、RestTemplate等方式的远程调用,在提供HTTP服务的同时可以提供Dubbo服务。Dubbo Spring Cloud支持HTTP远程调用级大的方便了我们的对接外部系统,无需对Dubbo再做二次封装。

1. 案例实战

接下来,我们通过一个简单的案例来介绍一下Dubbo Spring Cloud通过注解的方式是如何同时提供Dubbo服务和HTTP服务的。

1.1 创建父工程dubbo-spring-cloud-http

工程依赖pom.xml如下:

代码清单:Alibaba/dubbo-spring-cloud-http/pom.xml


org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-starter-web com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery org.projectlombok lombok trueorg.springframework.boot spring-boot-starter-test test

1.2 创建子工程dubbo_provider_web,服务提供方

工程依赖pom.xml如下:

代码清单:Alibaba/dubbo-spring-cloud-http/dubbo_provider_web/pom.xml


com.springcloud dubbo_api ${project.version}com.alibaba.cloud spring-cloud-starter-dubbo 

这里引入Dubbo Spring Cloud工具包和Dubbo API依赖包。

配置文件参考上一节配置,这里不再赘述。

接口实现类UserServiceI.java如下:

代码清单:Alibaba/dubbo-spring-cloud-http/dubbo_provider_web/src/main/java/com/springcloud/dubbo_provider_web/service/UserServiceI.java


@Service(version = "1.0.0")@RestController@Slf4jpublic class UserServiceI implements UserService { private Map usersRepository = Maps.newHashMap(); @Override @PostMapping("/save") public UserModel save(@RequestBody UserModel user) { return usersRepository.put(user.getId(), user); } @Override @DeleteMapping("/remove") public void remove(@RequestParam("id") Long userId) { usersRepository.remove(userId); } @Override @GetMapping("/findAll") public Collection findAll() { return usersRepository.values(); }}
  • @Service注解有很多有关服务的配置属性,这里使用 version 定义当前接口版本,此处版本仅在 Dubbo 调用时生效, HTTP 调用无效,更多相关配置可以参考源码org.apache.dubbo.config.annotation.Service。

1.3 创建子工程 spring_cloud_consumer , web 服务消费方

工程依赖pom.xml如下:

代码清单:Alibaba/dubbo-spring-cloud-http/spring_cloud_consumer/pom.xml


com.springcloud dubbo_api ${project.version}org.springframework.cloud spring-cloud-starter-openfeign 

配置文件application.yml如下:

代码清单:Alibaba/dubbo-spring-cloud-http/spring_cloud_consumer/src/main/resources/application.yml


server:port: 8080spring:application: name: spring-cloud-consumer-servercloud: nacos: discovery: server-addr: 192.168.44.129:8848

接口测试类UserController.java如下:

代码清单:Alibaba/dubbo-spring-cloud-http/spring_cloud_consumer/src/main/java/com/springcloud/spring_cloud_consumer/controller/UserController.java


@RestControllerpublic class UserController { @Autowired UserRemote userRemote; @Autowired RestTemplate restTemplate; @PostMapping("/saveByFeign") public UserModel saveByFeign(@RequestBody UserModel user) { return userRemote.save(user); } @DeleteMapping("/removeByFeign") public void removeByFeign(@RequestParam("id") Long userId) { userRemote.remove(userId); } @GetMapping("/findAllByFeign") public Collection findAllByFeign() { return userRemote.findAll(); } @PostMapping("/saveByRestTemplate") public UserModel saveByRestTemplate(@RequestBody UserModel user) { return restTemplate.postForObject("http://dubbo-spring-cloud-provider-web/save/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值