IntelliJ IDEA(2019)Maven聚合工程实现dubbo入门案例-阿里云开发者社区

开发者社区> 游客a74jvhcp7vclg> 正文

IntelliJ IDEA(2019)Maven聚合工程实现dubbo入门案例

简介: maven和dubbo在现在来说都是非常火的技术,本文就来记录下IntelliJ IDEA中通过maven的聚合工程来实现dubbo的入门案例
+关注继续查看


文章目录

   项目创建

       创建父工程

       创建公共模块

       创建服务提供者

       创建消费者

   dubbo案例

       公共模块操作

       服务提供者

           1.添加依赖

           2.接口实现

           3.相关配置

           4.添加日志文件

           5.启动服务

       服务消费者

           1.添加相关依赖

           2.配置配置文件

           3.添加日志文件

           4.访问服务

 maven和dubbo在现在来说都是非常火的技术,本文就来记录下IntelliJ IDEA中通过maven的聚合工程来实现dubbo的入门案例

dubbo-parent  --父工程
    |-- dubbo-commons -- 公共模块
    |-- dubbo-provider   -- 服务提供者
    |-- dubbo-consumer --服务消费者

项目创建

创建父工程

 创建父工程,不用选择模板。

image.png

指定坐标信息

image.png

image.png

创建完成

image.png

创建公共模块

 创建公共模块,如下:

image.png

继续maven构建,不用勾选模板。

image.png

image.png

image.png

image.png

创建成功

image.png

创建服务提供者

 相同的步骤创建服务提供者

image.png

创建消费者

 相同的步骤创建服务提供者

image.png

dubbo案例

公共模块操作

 创建公共接口,就这一个功能

/**
 * 接口:定义相关的行为
 */
public interface UserService {

    public String sayHello(String msg);
}

image.png

服务提供者

1.添加依赖

 服务提供者需要依赖dubbo,zookeeper,spring和commons等,具体如下:

<dependencies>
     <!-- 依赖公共模块 -->
        <dependency>
            <groupId>com.dpb</groupId>
            <artifactId>dubbo-commos</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    <!-- 引入Spring的依赖 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.3.21.RELEASE</version>
    </dependency>
    <!-- 引入日志的依赖 -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.25</version>
    </dependency>
        <!-- 引入dubbo框架(服务端、客户端通用) -->
       <dependency>
           <groupId>com.alibaba</groupId>
           <artifactId>dubbo</artifactId>
           <version>2.5.3</version>
           <exclusions>
               <exclusion>
                   <artifactId>spring</artifactId>
                   <groupId>org.springframework</groupId>
               </exclusion>
           </exclusions>
       </dependency>
       <!-- 因为dubbo服务端需要注册服务到zk中,因此依赖zkClient包 -->
       <dependency>
           <groupId>com.github.sgroschupf</groupId>
           <artifactId>zkclient</artifactId>
           <version>0.1</version>
       </dependency>
 </dependencies>

2.接口实现

 引入了commons模块的依赖,我们就可以创建公共接口的实现类了,具体如下:

/**
 * @program: dubbo-parent
 * @description: 公共接口的实现类
 * @author: 波波烤鸭
 * @create: 2019-05-13 20:34
 */
public class UserServiceImpl implements UserService {
    @Override
    public String sayHello(String msg) {
        System.out.println("服务端接收:"+msg);
        return "你好啊";
    }
}

3.相关配置

 创建spring的配置文件,如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-4.0.xsd
    http://code.alibabatech.com/schema/dubbo
    http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="dubboProvider" />

    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry protocol="zookeeper"
                    address="zk00:2181,zk01:2181,zk02:2181"  />

    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <!-- 启用monitor模块 -->
    <dubbo:monitor protocol="registry" />

    <bean id="userService" class="com.dpb.service.impl.UserServiceImpl" />

    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.dpb.service.UserService" ref="userService"
                   group="dubbo"  version="1.0.0" timeout="3000"/>
</beans>

4.添加日志文件

 添加一个log4j.properties文件,内容如下:

log4j.rootLogger=INFO,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout

5.启动服务

 创建启动程序,如下:

/**
 * @program: dubbo-parent
 * @description: 主方法
 * @author: 波波烤鸭
 * @create: 2019-05-13 20:39
 */
public class App {

    public static void main(String[] args) throws Exception{
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        //挂起当前线程,如果没有改行代码,服务提供者进程会消亡,服务消费者就发现不了提供者了
        Thread.currentThread().join();

    }
}

完成目录结构

image.png

启动程序

image.png

服务端启动成功~

zookeeper中也可以查看到相关信息

image.png

服务消费者

1.添加相关依赖

 依赖和provider差不多,具体如下:

<dependencies>
     <!-- 依赖公共模块 -->
     <dependency>
         <groupId>com.dpb</groupId>
         <artifactId>dubbo-commos</artifactId>
         <version>1.0-SNAPSHOT</version>
     </dependency>
     <!-- 依赖Spring -->
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context</artifactId>
         <version>4.3.21.RELEASE</version>
     </dependency>
     <!-- log4j的依赖 -->
     <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-log4j12</artifactId>
         <version>1.7.25</version>
     </dependency>
     <!-- 引入dubbo框架(服务端、客户端通用) -->
     <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>dubbo</artifactId>
         <version>2.5.3</version>
         <exclusions>
             <exclusion>
                 <artifactId>spring</artifactId>
                 <groupId>org.springframework</groupId>
             </exclusion>
         </exclusions>
     </dependency>
     <!-- 因为dubbo服务端需要注册服务到zk中,因此依赖zkClient包 -->
     <dependency>
         <groupId>com.github.sgroschupf</groupId>
         <artifactId>zkclient</artifactId>
         <version>0.1</version>
     </dependency>
 </dependencies>

2.配置配置文件

 添加spring的配置文件,配置dubbo消费者的相关信息

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

    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="dubboConsumer" />
    <!-- 使用zookeeper注册中心暴露发现服务地址 -->
    <dubbo:registry  protocol="zookeeper"
                     address="zk00:2181,zk01:2181,zk02:2181" />
    <!-- 启动monitor-->
    <dubbo:monitor protocol="registry" />
    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
    <dubbo:reference id="userService" interface="com.dpb.service.UserService"
                     group="dubbo" version="1.0.0" timeout="3000"/>
</beans>

3.添加日志文件

 添加一个log4j.properties文件,内容如下:

log4j.rootLogger=INFO,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout

4.访问服务

 创建启动程序,访问服务

/**
 * @program: dubbo-parent
 * @description: consumer测试代码
 * @author: 波波烤鸭
 * @create: 2019-05-13 20:50
 */
public class TestConsumer {
    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService service = ac.getBean(UserService.class);
        System.out.println(service.sayHello("hello provider"));
    }
}

启动访问,查看输出:

服务提供者输出:

image.png

服务消费者输出:

image.png

ok~到此实现了IDEA中通过maven聚合工程实现dubbo的简单入门案例!


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10084 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13890 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11889 0
MySQL 多实例的安装
MySQL 多实例的安装Step 1 . 准备工作关闭防火墙; 安装 MySQL依赖于libaio 库;下载,解压,重命名 MySQL的执行文件;新建用户组和用户 等准备工作在此不再赘述。 可执行文件目录为 /data/mysql57 添加用户和组的指令 groupadd mysql useradd mysql -g mysql Step 2 . 添加环境变量在/etc/profile文件中,追加 PATH=${PATH}:/data/mysql57/bin/ 保存后,如需要立即生效,可执行 source /etc/profile 。
1348 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7365 0
我的Android进阶之旅------&gt;Android之动画之Frame Animation实例
============================首先看看官网上关于Frame animation的介绍================================ 地址:http://developer.
918 0
React 16 Jest ES6 Class Mocks(使用ES6语法类的模拟) 实例一
转载地址 React 16 Jest ES6 Class Mocks(使用ES6语法类的模拟) 实例一 项目初始化 git clone https://github.
1165 0
+关注
游客a74jvhcp7vclg
10余年开发架构经验,同时乐于技术分享!
332
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载