博客
关于我
八:微服务调用组件Dubbo
阅读量:369 次
发布时间:2019-03-05

本文共 4354 字,大约阅读时间需要 14 分钟。

Spring Cloud与Dubbo整合配置指南

1. Spring Cloud整合Dubbo

1.1 provider端配置

为了实现Spring Cloud与Dubbo的无缝集成,我们需要先在提供方进行相应的配置。以下是具体的实现步骤:

引入依赖

在项目根目录的pom.xml中添加以下依赖:

com.alibaba.cloud
spring-cloud-starter-dubbo
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery

application.yml配置

application.yml中添加以下配置:

dubbo:  scan:    base-packages: com.tuling.mall.user.service  protocol:    name: dubbo    port: -1  registry:    address: spring-cloud://127.0.0.1:8848spring:  application:    name: spring-cloud-dubbo-provider-user  main:    allow-bean-definition-overriding: true  cloud:    nacos:      discovery:        server-addr: 127.0.0.1:8848

服务实现类配置

在服务实现类上使用@DubboService注解,确保服务能够被正确暴露:

import org.springframework.stereotype.Component;import com.alibaba.dubbo.service.DubboService;@Component@DubboServicepublic class UserServiceImpl implements UserService {    @Autowired    private UserMapper userMapper;    @Override    public List
list() { return userMapper.list(); } @Override public User getById(Integer id) { return userMapper.getById(id); }}

1.2 consumer端配置

引入依赖

在消费方项目中添加以下依赖:

org.springframework.boot
spring-boot-starter-web
com.alibaba.cloud
spring-cloud-starter-dubbo
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.springframework.cloud
spring-cloud-starter-openfeign

application.yml配置

application.yml中添加以下配置:

dubbo:  cloud:    subscribed-services: spring-cloud-dubbo-provider-user  protocol:    name: dubbo    port: -1  registry:    address: spring-cloud://127.0.0.1:8848spring:  application:    name: spring-cloud-dubbo-consumer-user  main:    allow-bean-definition-overriding: true  cloud:    nacos:      discovery:        server-addr: 127.0.0.1:8848

服务消费方引入依赖

在消费方中使用@DubboReference注解引入服务:

@RestController@RequestMapping("/user")public class UserController {    @DubboReference    private UserService userService;    @Autowired    private RestTemplate restTemplate;    @Bean    @LoadBalanced    @DubboTransported    public RestTemplate restTemplate() {        return new RestTemplate();    }    @RequestMapping("/list")    public List
list() { return userService.list(); }}

1.3 Open Feign迁移到Dubbo

服务提供方配置

在服务提供方添加以下注解:

@RestController@RequestMapping("/user")public class UserServiceImpl implements UserService {    @Autowired    private UserMapper userMapper;    @Override    @RequestMapping("/list")    public List
list() { return userMapper.list(); } @Override @RequestMapping("/getById/{id}") public User getById(@PathVariable("id") Integer id) { return userMapper.getById(id); }}

服务消费方配置

在消费方中使用@DubboTransported注解:

@FeignClient(value = "spring-cloud-dubbo-provider-user-feign", path = "/user")@DubboTransported(protocol = "dubbo")public interface UserDubboFeignService {    @RequestMapping("/list")    public List
list(); @RequestMapping("/getById/{id}") public User getById(@PathVariable("id") Integer id);}@FeignClient(value = "spring-cloud-dubbo-provider-user-feign", path = "/user")public interface UserFeignService { @RequestMapping("/list") public List
list(); @RequestMapping("/getById/{id}") public User getById(@PathVariable("id") Integer id);}

调用对象配置

在控制器中使用@DubboReference注解:

@RestController@RequestMapping("/user")public class UserController {    @DubboReference    private UserService userService;    @Autowired    @DubboTransported    private UserFeignService userFeignService;    @Autowired    private UserDubboFeignService userDubboFeignService;    @Autowired    private RestTemplate restTemplate;    @Bean    @LoadBalanced    @DubboTransported    public RestTemplate restTemplate() {        return new RestTemplate();    }    @RequestMapping("/list")    public List
list() { return userFeignService.list(); } @RequestMapping("/list2") public List
list2() { return userDubboFeignService.list(); } @RequestMapping("/list3") public List
list3() { return restTemplate.getForObject("http://spring-cloud-dubbo-provider-user-feign/user/list", List.class); }}

转载地址:http://nreg.baihongyu.com/

你可能感兴趣的文章
上周热点回顾(3.2-3.8)
查看>>
.NET跨平台之旅:借助ASP.NET 5 Beta5的新特性显示CLR与操作系统信息
查看>>
上周热点回顾(7.27-8.2)
查看>>
上周热点回顾(9.28-10.4)
查看>>
上周热点回顾(5.2-5.8)
查看>>
上周热点回顾(5.9-5.15)
查看>>
.NET跨平台之旅:将示例站点升级至 .NET Core 1.1 Preview 1
查看>>
上周热点回顾(1.16-1.22)
查看>>
上周热点回顾(1.23-1.29)
查看>>
上周热点回顾(3.20-3.26)
查看>>
上周热点回顾(4.24-4.30)
查看>>
[故障公告]博客站点1台负载均衡遭遇流量攻击,造成联通与移动用户无法正常访问
查看>>
云计算之路-阿里云上:14:20-14:55博客后台2台服务器都CPU 100%引发的故障
查看>>
上周热点回顾(6.19-6.25)
查看>>
云计算之路-阿里云上:docker swarm 集群故障与异常
查看>>
上周热点回顾(2.19-2.25)
查看>>
云计算之路-阿里云上:博客web服务器轮番CPU 100%
查看>>
云计算之路-阿里云上:服务器CPU 100%问题是memcached连接数限制引起的
查看>>
上周热点回顾(3.26-4.1)
查看>>
上周热点回顾(6.25-7.1)
查看>>