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

相关推荐
我命由我123455 分钟前
Python 开发 - Python 虚拟环境
运维·开发语言·后端·python·http·https·java-ee
c#上位机6 分钟前
C#上位机项目实战——exe项目调试更改dll中源代码
开发语言·c#
basketball6166 分钟前
C++ 中字符串与常见类型的转换总结
开发语言·c++
梦影_7 分钟前
MySQL进阶教程(一)—— 储存过程与触发器(上)
开发语言·数据库·后端·sql·mysql·中间件
云和数据.ChenGuang19 分钟前
LLM大模型对接本地Ollama部署模型
开发语言·人工智能·python·langchain
文丑颜不良啊25 分钟前
LeetCode276~300题目解析
java·leetcode
Vegetable_xu30 分钟前
Spring Bean 循环依赖:为什么有时能过、有时启动就挂
java·spring·mybatis
等我调个Bug32 分钟前
C++智能指针通俗讲解
开发语言·c++
黑化旺仔1 小时前
【OC】Runtime:类元数据、加载初始化与消息派发
开发语言·macos·ios·objective-c
Felven1 小时前
C. Removing Smallest Multiples
c语言·开发语言