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 来注入我们的代理类,然后和服务端做交互

相关推荐
SteveKenny2 小时前
Python 梯度下降法(六):Nadam Optimize
开发语言·python
Hello.Reader3 小时前
深入浅出 Rust 的强大 match 表达式
开发语言·后端·rust
xrgs_shz5 小时前
MATLAB的数据类型和各类数据类型转化示例
开发语言·数据结构·matlab
customer086 小时前
【开源免费】基于SpringBoot+Vue.JS体育馆管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
Miketutu7 小时前
Spring MVC消息转换器
java·spring
乔冠宇7 小时前
Java手写简单Merkle树
java·区块链·merkle树
LUCIAZZZ8 小时前
简单的SQL语句的快速复习
java·数据库·sql
来恩10038 小时前
C# 类与对象详解
开发语言·c#
komo莫莫da9 小时前
寒假刷题Day19
java·开发语言