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

文章目录

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

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

项目创建

创建父工程

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

指定坐标信息

创建完成

创建公共模块

  创建公共模块,如下:

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

创建成功

创建服务提供者

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

创建消费者

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

dubbo案例

公共模块操作

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

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

    public String sayHello(String msg);
}

服务提供者

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

    }
}

完成目录结构

启动程序

服务端启动成功~ 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>

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

启动访问,查看输出:

服务提供者输出:

服务消费者输出:

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券