Dubbo的简单使用

时间:2025-04-24 07:38:57

Dubbo搭建


  • 导入Maven依赖
<dependency>
    <groupId></groupId>
    <artifactId>dubbo</artifactId>
    <version>2.6.2</version>
</dependency>
<!--连接注册中心 zkclient-->
<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.8</version>
</dependency>
<!--连接注册中心 curator-->
<dependency>
    <groupId></groupId>
    <artifactId>curator-framework</artifactId>
    <version>2.7.1</version>
</dependency>

基于配置文件版本

服务提供者

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="/schema/beans"
       xmlns:xsi="http:///2001/XMLSchema-instance"
       xmlns:dubbo="/schema/dubbo"
       xsi:schemaLocation="/schema/beans
       /schema/beans/
        /schema/dubbo
        /schema/dubbo/">

    <!--配置SpringBean-->
    <bean id="qqUserService" class=""/>
    <bean id="wxUserService" class=""/>


    <!-- 提供方应用信息,用于计算依赖关系-->
    <dubbo:application name="UserCenterProvider"/>
    <!--dubbo 注册中心 client可选值 zkclient、curator -->
    <dubbo:registry address="zookeeper://192.168.128.128:2181" client="curator" />
    <!--配置dubbo服务端实现-->
    <dubbo:protocol name="dubbo" port="20880" server="netty"/>

    <!--暴露服务接口-->
    <dubbo:service interface="" ref="qqUserService" group="g1"/>
    <dubbo:service interface="" ref="wxUserService" group="g2" />
</beans>

服务消费者

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="/schema/beans"
       xmlns:xsi="http:///2001/XMLSchema-instance"
       xmlns:dubbo="/schema/dubbo"
       xsi:schemaLocation="/schema/beans
       /schema/beans/
        /schema/dubbo
        /schema/dubbo/">

    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="DubboQQConsumer"/>
    <!--dubbo 注册中心 client可选值 zkclient、curator -->
    <dubbo:registry address="zookeeper://192.168.128.128:2181" client="curator" />

    <!--引用服务 基于接口创建代理bean -->
    <dubbo:reference id="qqUserService" proxy="jdk" group="g2" interface="" />
</beans>

注解版本配置

@Configuration
@DubboComponentScan(basePackages = {
        "",
        ""}
        )
public class DubboConfiguration {
    //等价 <dubbo:application name="provider-test"/>
    @Bean
    public ApplicationConfig applicationConfig() {
        ApplicationConfig applicationConfig = new ApplicationConfig();
        applicationConfig.setName("provider-test");
        return applicationConfig;
    }
    //等价 <dubbo:registry address="zookeeper://192.168.128.128:2181" client="curator" />
    @Bean
    public RegistryConfig registryConfig() {
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setAddress("zookeeper://192.168.128.128:2181");
        registryConfig.setClient("curator");
        return registryConfig;
    }
    @Bean
    public  ProtocolConfig protocolConfig(){
        ProtocolConfig protocolConfig=new ProtocolConfig();
        protocolConfig.setName("dubbo");
        protocolConfig.setPort(20880);
        protocolConfig.setServer("netty");
        return  protocolConfig;
    }
}

服务暴露

@Service(
        group = "g1"
)
public class QQUserService implements IUserService {

    public User queryUserById(Integer id) {
        return new User(id,"QQ用户1",new Date());
    }

    public List<User> queryAll() {
        return null;
    }

    public void deleteUserById(Integer id) {

    }

    public void UpdateUser(User user) {

    }
}
---    
import com.alibaba.dubbo.config.annotation.Service;
import com.baizhi.entity.User;
import com.baizhi.service.IUserService;

import java.util.Date;
import java.util.List;
@Service(group = "g2")
public class WXUserService implements IUserService {
    public User queryUserById(Integer id) {
        return new User(id,"WX用户1",new Date());
    }

    public List<User> queryAll() {
        return null;
    }

    public void deleteUserById(Integer id) {

    }

    public void UpdateUser(User user) {

    }
}

消费端

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScan;
import com.baizhi.service.IUserService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@DubboComponentScan(basePackages = "")
public class DubboConfiguration {
    @Reference(group = "g2" ,proxy = "jdk")
    private IUserService userService;

    @Bean
    public IUserService qqUserService(){
      return userService;
    }

    @Bean
    public ApplicationConfig applicationConfig() {
        ApplicationConfig applicationConfig = new ApplicationConfig();
        applicationConfig.setName("provider-test");
        return applicationConfig;
    }

    @Bean
    public RegistryConfig registryConfig() {
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setAddress("zookeeper://192.168.128.128:2181");
        registryConfig.setClient("curator");
        return registryConfig;
    }
}