# Dubbo—hello world

Apache Dubbo (incubating) 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

接下来用一个实例,简单的结束dubbo的使用。

将接口建为一个独立的模块

在这里插入图片描述

建一个接口类 :

/**
 * @author xsh
 * @date 2019/2/27
 * @since 1.0.0
 */
public interface IUserService {

    String sayHey(String userName);

}

在父工程加入dubbo对应的依赖:

<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo -->
<dependency>
  <groupId>org.apache.dubbo</groupId>
  <artifactId>dubbo</artifactId>
  <version>2.7.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework -->
<dependency>
  <groupId>org.apache.curator</groupId>
  <artifactId>curator-framework</artifactId>
  <version>2.9.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<dependency>
  <groupId>org.apache.zookeeper</groupId>
  <artifactId>zookeeper</artifactId>
  <version>3.5.0-alpha</version>
  <type>pom</type>
</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
<dependency>
  <groupId>org.apache.curator</groupId>
  <artifactId>curator-recipes</artifactId>
  <version>2.7.0</version>
</dependency>

创建服务提供方

依赖dubbo-api

实现接口 :

/**
 * @author xsh
 * @date 2019/2/27
 * @since 1.0.0
 */
public class UserServiceImpl  implements IUserService {


    @Override
    public String sayHey(String userName) {

        System.out.println("  provider  --->  invoking   ");

        return userName+ ":  hey !  ";
    }

}

在resources 目录下建一个META-INF.spring.provider.xml ,这里是因为dubbo 内部使用了Spring 会在该目录下寻找配置

/**
 * SpringContainer. (SPI, Singleton, ThreadSafe)
 */
public class SpringContainer implements Container {

    public static final String SPRING_CONFIG = "dubbo.spring.config";
    // 加载配置 在META-INF/spring
    public static final String DEFAULT_SPRING_CONFIG = "classpath*:META-INF/spring/*.xml";
    private static final Logger logger = LoggerFactory.getLogger(SpringContainer.class);
    static ClassPathXmlApplicationContext context;
    
    public static ClassPathXmlApplicationContext getContext() {
        return context;
    }

    @Override
    public void start() {
        String configPath = ConfigUtils.getProperty(SPRING_CONFIG);
        if (configPath == null || configPath.length() == 0) {
            configPath = DEFAULT_SPRING_CONFIG;
        }
        context = new ClassPathXmlApplicationContext(configPath.split("[,\\s]+"));
        context.start();
    }
.....

provider.xml:

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">


    <dubbo:application name="dubbo-provider"/>
    <dubbo:registry  address="zookeeper://192.168.2.191:2181"/>
    <dubbo:service id="userService"  interface="com.jay.api.IUserService" ref="userServiceImpl"/>
    <bean  id="userServiceImpl" class="com.jay.provider.UserServiceImpl" />

</beans>

启动类:

public class App {

    public static void main( String[] args ) {

        Main.main(args);

    }
}

服务调用方

依赖dubbo-api

在resources 目录下建一个META-INF.spring.consumer.xml

consumer.xml:

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <dubbo:application name="dubbo-consumer"/>
    <dubbo:registry  address="zookeeper://192.168.2.191:2181"/>
    <dubbo:reference id="userService" check="false" interface="com.jay.api.IUserService"/>
</beans>

启动类:

public class App {

    public static void main(String[] args) {

        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("META-INF/spring/consumer.xml");
        IUserService userService = (IUserService) context.getBean("userService");
        String result = userService.sayHey("xsh");
        System.out.println(result);
    }
}

启动zookeeper ;

结果:

xsh : hey !

代码已上传GitHub : https://github.com/peonutButter/dubbo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值