【黑马-SpringCloudAlibaba】学习笔记11-扩展章节 Dubbo--rpc通信

本文介绍了如何在SpringCloudAlibaba中整合Dubbo进行RPC通信。首先,讲述了Dubbo作为高性能的Java RPC框架及其在SOA服务治理中的作用。接着,详细阐述了实现过程,包括为服务提供者添加依赖、配置及编写并暴露服务,以及服务消费者的依赖配置、服务引用和调用测试。通过这些步骤,展示了如何在实际应用中使用Spring-cloud-alibaba-dubbo进行服务调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

扩展章节 Dubbo–rpc通信

Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC分布式服务框架,致力于提供高性能和透明化的
RPC远程服务调用方案,以及SOA服务治理方案。
Spring-cloud-alibaba-dubbo 是基于SpringCloudAlibaba技术栈对dubbo技术的一种封装,目的在
于实现基于RPC的服务调用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gHUaUaU8-1667891325771)(dubbo-RPC服务调用.png)]

实现
提供统一业务api
public interface ProductService {
Product findByPid(Integer pid);
}

提供服务提供者
1.添加依赖
<!--dubbo-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
2,添加dubbo配置
dubbo:
  scan:
    base-packages: com.itheima.service.impl # 开启包扫描
  protocols:
    dubbo:
      name: dubbo # 服务协议
      port: -1 # 服务端口
  registry:
    address: spring-cloud://localhost # 注册中心
3, 编写并暴露服务
//暴露服务:注意这里使用的是dubbo提供的注解@Service,而不是Spring的
@Service
public class ProductServiceImpl implements ProductService {
@Autowired
private ProductDao productDao;
@Override
public Product findByPid(Integer pid) {
return productDao.findById(pid).get();
}
}
提供服务消费者
1.添加依赖
<!--dubbo-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
2,添加dubbo配置
dubbo:
  registry:
    address: spring-cloud://localhost # 注册中心
  cloud:
    subscribed-services: service-product # 订阅的提供者名称
3 引用服务
@RestController
@Slf4j
public class OrderController {
  @Autowired
  private OrderService orderService;
  //引用服务
  @Reference
  private ProductService productService;
  @RequestMapping("/order/prod/{pid}")
  public Order order(@PathVariable Integer pid) {
    log.info("接收到{}号商品的下单请求,接下来调用商品微服务查询此商品信息", pid);
//调用商品微服务,查询商品信息
    Product product = productService.findByPid(pid);
    log.info("查询到{}号商品的信息,内容是:{}", pid, JSON.toJSONString(product));
//下单(创建订单)
    Order order = new Order();
    order.setUid(1);
    order.setUsername("测试用户");
    order.setPid(pid);
    order.setPname(product.getPname());
    order.setPprice(product.getPprice());
    order.setNumber(1);
    orderService.createOrder(order);
    log.info("创建订单成功,订单信息为{}", JSON.toJSONString(order));
    return order;
  }
}
4 服务调用测试

访问: http://localhost:8091/order/prod/1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值