前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IntelliJ IDEA(2019)Maven聚合工程实现dubbo入门案例

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

作者头像
用户4919348
发布2019-05-14 09:52:12
1.6K0
发布2019-05-14 09:52:12
举报
文章被收录于专栏:波波烤鸭波波烤鸭

文章目录

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

代码语言:javascript
复制
dubbo-parent  --父工程
	|-- dubbo-commons -- 公共模块
	|-- dubbo-provider   -- 服务提供者
	|-- dubbo-consumer --服务消费者

项目创建

创建父工程

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

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

指定坐标信息

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

创建完成

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

创建公共模块

  创建公共模块,如下:

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

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

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

创建成功

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

创建服务提供者

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

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

创建消费者

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

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

dubbo案例

公共模块操作

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

代码语言:javascript
复制
/**
 * 接口:定义相关的行为
 */
public interface UserService {

    public String sayHello(String msg);
}
在这里插入图片描述
在这里插入图片描述

服务提供者

1.添加依赖

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

代码语言:javascript
复制
<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模块的依赖,我们就可以创建公共接口的实现类了,具体如下:

代码语言:javascript
复制
/**
 * @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的配置文件,如下:

代码语言:javascript
复制
<?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文件,内容如下:

代码语言:javascript
复制
log4j.rootLogger=INFO,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout

5.启动服务

  创建启动程序,如下:

代码语言:javascript
复制
/**
 * @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差不多,具体如下:

代码语言:javascript
复制
<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消费者的相关信息

代码语言:javascript
复制
<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文件,内容如下:

代码语言:javascript
复制
log4j.rootLogger=INFO,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout

4.访问服务

  创建启动程序,访问服务

代码语言:javascript
复制
/**
 * @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的简单入门案例!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年05月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 项目创建
    • 创建父工程
      • 创建公共模块
        • 创建服务提供者
          • 创建消费者
          • dubbo案例
            • 公共模块操作
              • 服务提供者
                • 1.添加依赖
                • 2.接口实现
                • 3.相关配置
                • 4.添加日志文件
                • 5.启动服务
              • 服务消费者
                • 1.添加相关依赖
                • 2.配置配置文件
                • 3.添加日志文件
                • 4.访问服务
            相关产品与服务
            微服务引擎 TSE
            微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档