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

举报
波波烤鸭 发表于 2022/03/30 01:12:56 2022/03/30
【摘要】 文章目录 项目创建创建父工程创建公共模块创建服务提供者创建消费者 dubbo案例公共模块操作服务提供者1.添加依赖2.接口实现3.相关配置4.添加日志文件5.启动服务 服务消费者1.添加...


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

  
 
  • 1
  • 2
  • 3
  • 4

项目创建

创建父工程

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

在这里插入图片描述

指定坐标信息

在这里插入图片描述

在这里插入图片描述

创建完成

在这里插入图片描述

创建公共模块

  创建公共模块,如下:

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
创建成功

在这里插入图片描述

创建服务提供者

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

在这里插入图片描述

创建消费者

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

在这里插入图片描述

dubbo案例

公共模块操作

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

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

    public String sayHello(String msg);
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

服务提供者

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>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

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 "你好啊";
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

4.添加日志文件

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

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

  
 
  • 1
  • 2
  • 3

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();

    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

完成目录结构

在这里插入图片描述

启动程序

在这里插入图片描述
服务端启动成功~
zookeeper中也可以查看到相关信息

在这里插入图片描述
在这里插入图片描述

服务消费者

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>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

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>


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

3.添加日志文件

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

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

  
 
  • 1
  • 2
  • 3

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"));
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

启动访问,查看输出:

服务提供者输出:

在这里插入图片描述

服务消费者输出:

在这里插入图片描述

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

文章来源: dpb-bobokaoya-sm.blog.csdn.net,作者:波波烤鸭,版权归原作者所有,如需转载,请联系作者。

原文链接:dpb-bobokaoya-sm.blog.csdn.net/article/details/90180610

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。