dubbo 初体验 2 boot 篇

dubbo 初体验 2 boot 篇

上一章,我们使用了 dubbo 的基础模式来做 rpc 通讯,但是在日常中的 java 开发并不会直接使用 spring 而是通过 springboot 来间接的使用 dubbo 和 spring 的搭配,并且 springboot 在开发的时候可以更为快捷的调用 bean 配置我们的参数,application 的文件有提示功能在使用 idea 作为我们的开发工具的时候,所以更为受喜欢。

引入依赖

第一步当然是引入我们的依赖,这里我们使用的版本是目前比较新的版本,3.2.14 具体的版本信息可以直接到官网去查看 (maven reposition)[https://mvnrepository.com/\] 对于技术我还是日常尝鲜可以使用最新的,追求最新最高级的技术,生产开发以稳为主

xml 复制代码
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>3.2.14</version>
</dependency>

配置文件

之前的 spring 和 dubbo 的基础版本我们是直接使用的 xml 的方式作为配置文件这里我们使用的 springboot 的提供的 yaml 的配置方式,

服务端配置

yaml 复制代码
spring:
  application:
    name: dubbo-rpc-boot-provider
dubbo:
  application:
    qos-enable: true
  protocol:
    port: 20880
    name: dubbo

客户端配置

yaml 复制代码
spring:
  application:
    name: dubbo-rpc-boot-provider
dubbo:
  protocol:
    name: dubbo
    port: -1
  application:
    qos-enable: false

具体的功能和实现

具体功能为,服务端的是功能的实现和暴露,客户端的为实现远程代理并且访问服务端得到响应的内容

服务端

java 复制代码
package com.rpc.dubbo.service;

import com.rpc.dubbo.entity.Hello;
import org.apache.dubbo.config.annotation.DubboService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

/**
 * @author xl-9527
 * @since 2024/12/27
 **/
@Service
@DubboService
public class HelloServiceImpl implements HelloService {

    private final Logger log = LoggerFactory.getLogger(HelloServiceImpl.class);

    @Override
    public Boolean hello(final Hello hello) {
        log.info("hello 接口调用 value -> {}, username -> {}", hello.getValue(), hello.getUsername());
        return Boolean.TRUE;
    }
}

客户端

java 复制代码
package com.rpc.dubbo.stub;

import com.alibaba.fastjson2.JSON;
import com.rpc.dubbo.entity.Hello;
import com.rpc.dubbo.service.HelloService;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Service;

/**
 * @author xl-9527
 * @since 2024/12/29
 **/
@Slf4j
@Service
public class HelloServiceStub implements InitializingBean {


    @DubboReference(url = "dubbo://172.29.32.1:20880/com.rpc.dubbo.service.HelloService?serializable=fastjson2")
    private HelloService helloService;

    @Override
    public void afterPropertiesSet() throws Exception {
        Boolean hello = helloService.hello(new Hello("hello", "xl-9527"));
        log.info("hello 接口调用 -> {}", JSON.toJSONString(hello));
    }
}

总结

相对于使用 xml 的使用更为简单方便,但是虽然从 xml 标签改变为注解的方式,但是差不多是没有太大变化的都是 server 或者 reference 的名词。使用上其实并没有太多的区别,都是通过 spring 来注入我们的代理类,然后和服务端做交互

相关推荐
科雷软件测试2 小时前
Python中itertools.product:快速生成笛卡尔积
开发语言·python
OOJO3 小时前
c++---list介绍
c语言·开发语言·数据结构·c++·算法·list
笨笨饿5 小时前
29_Z变换在工程中的实际意义
c语言·开发语言·人工智能·单片机·mcu·算法·机器人
艾为电子5 小时前
【技术帖】让接口不再短命:艾为 C-Shielding™ Type-C智能水汽防护技术解析
c语言·开发语言
棉花骑士6 小时前
【AI Agent】面向 Java 工程师的Claude Code Harness 学习指南
java·开发语言
IGAn CTOU6 小时前
PHP使用Redis实战实录2:Redis扩展方法和PHP连接Redis的多种方案
开发语言·redis·php
爱敲代码的小鱼6 小时前
springboot(2)从基础到项目创建:
java·spring boot·spring
环黄金线HHJX.6 小时前
TSE框架配置与部署详解
开发语言·python
Vfw3VsDKo6 小时前
Maui 实践:Go 接口以类型之名,给 runtime 传递方法参数
开发语言·后端·golang
Pyeako7 小时前
PyQt5 + PaddleOCR实战:打造桌面级实时文字识别工具
开发语言·人工智能·python·qt·paddleocr·pyqt5