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 小时前
分布式缓存-GO(分布式算法之一致性哈希、缓存对外服务化)
开发语言·经验分享·分布式·后端·算法·缓存·golang
云和数据.ChenGuang2 小时前
PHP-FPM返回的File not found.”的本质
开发语言·php·运维工程师·运维技术
It's now2 小时前
Spring AI 基础开发流程
java·人工智能·后端·spring
cxh_陈2 小时前
线程的状态,以及和锁有什么关系
java·线程·线程的状态·线程和锁
计算机毕设VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue图书商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
R.lin2 小时前
Java 8日期时间API完全指南
java·开发语言·python
毕设源码-赖学姐3 小时前
【开题答辩全过程】以 高校教学质量监控平台为例,包含答辩的问题和答案
java·eclipse
高山上有一只小老虎3 小时前
翻之矩阵中的行
java·算法
yangpipi-3 小时前
《C++并发编程实战》 第4章 并发操作的同步
开发语言·c++
火钳游侠3 小时前
java单行注释,多行注释,文档注释
java·开发语言