建立父工程

打开idea,新建一个空的maven工程,作为整个项目的父工程。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.demo</groupId><artifactId>dubbo-parent</artifactId><version>1.0-SNAPSHOT</version><modules><module>dubbo-api</module><module>dubbo-service</module><module>dubbo-consumer</module></modules><packaging>pom</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><dependencies><dependency><groupId>com.alibaba.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>0.2.1-SNAPSHOT</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.5</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.2</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>2.13.0</version></dependency><!--<dependency>--><!--<groupId>org.apache.curator</groupId>--><!--<artifactId>curator-client</artifactId>--><!--<version>2.13.0</version>--><!--</dependency>--><!--<dependency>--><!--<groupId>org.apache.curator</groupId>--><!--<artifactId>curator-recipes</artifactId>--><!--<version>2.13.0</version>--><!--</dependency>--><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId></dependency></dependencies><repositories><repository><id>sonatype-nexus-snapshots</id><url>https://oss.sonatype.org/content/repositories/snapshots</url><releases><enabled>false</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories>
</project>

然后建立公共模块

..

..

完成之后在src/main/java目录下新建一个服务接口

内容:

package com.demo.common.service;public interface DemoService {String hello();
}

目录:

建立dubbo服务子模块

..

..

..

这个时候呢,Springboot的父工程不是我们建立的那个,所以要改一下parent,还需要加入公共模块的依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.demo</groupId><artifactId>dubbo-parent</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>dubbo-service</artifactId><version>0.0.1-SNAPSHOT</version><name>dubbo-service</name><description>dubbo服务</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.demo</groupId><artifactId>dubbo-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

下面写一个简单的dubbo服务,在与SpringBoot启动类同级目录下建立service包,里面有服务接口的实现

..服务接口实现

package com.demo.dubboservice.service.impl;import com.alibaba.dubbo.config.annotation.Service;
import com.demo.common.service.DemoService;/***  建议由服务提供方设置超时,在 Provider 上尽量多配置 Consumer 端属性*  timeout 方法调用超时*  retries 失败重试次数,缺省是 2 [2]*  loadbalance 负载均衡算法 [3],缺省是随机 random。还可以有轮询 roundrobin、最不活跃优先 [4] leastactive 等*  actives 消费者端,最大并发调用限制,即当 Consumer 对一个服务的并发调用到上限后,新调用会阻塞直到超时*/
@Service(registry = "dubboRegistry", timeout = 3000, version = "1.0", retries = 3, loadbalance = "random", actives = 5)
public class DemoServiceImpl implements DemoService {@Overridepublic String hello() {return "动物园里有大西几! 小凶许! 小脑斧! 梅发怒! 小福泥! 小海疼! 发福蝶! 大鸡居! 大飞囊! 大lai流! 强颈怒! 大蟒鞋! 小白去! 鸵寮! 大带许! 大穷猫! 大诺坨! 大你鱼! 丹鼎货! 小乌堆!";}
}

..然后修改application.properties

spring.application.name=dubbo-service
server.port=9999# 应用名
dubbo.application.id=service-provider
dubbo.application.name=service-provider# 扫描dubbo服务(@Service.. @Reference..)
dubbo.scan.basePackages=com.demo.dubboservice.service# 通信协议
dubbo.protocol.id = dubbo
dubbo.protocol.name = dubbo
dubbo.protocol.port = 20880# 注册中心
dubbo.registry.id = dubboRegistry
dubbo.registry.timeout=5000
dubbo.registry.address = 127.0.0.1:2181
dubbo.registry.client = curator
dubbo.registry.protocol=zookeeper

建立服务消费者子模块

..

..

..

同样,也需要更改parent并加入公共模块依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.demo</groupId><artifactId>dubbo-parent</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>dubbo-consumer</artifactId><version>0.0.1-SNAPSHOT</version><name>dubbo-consumer</name><description>dubbo消费者</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.demo</groupId><artifactId>dubbo-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

在Springboot启动类的同级目录下建立,controller

Controller

package com.demo.dubboconsumer.controller;import com.alibaba.dubbo.config.annotation.Reference;
import com.demo.common.service.DemoService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class DemoController {@Reference(version = "1.0")private DemoService demoService;@RequestMapping("/hello")public String hello(){return demoService.hello();}}

application.properties

spring.application.name=dubbo-service
server.port=9990# 应用名
dubbo.application.id=service-consumer
dubbo.application.name=service-consumer# 扫描dubbo服务(@Service.. @Reference..)
dubbo.scan.basePackages=com.demo.dubboconsumer.controller# 通信协议
dubbo.protocol.id = dubbo
dubbo.protocol.name = dubbo
dubbo.protocol.port = 20880# 注册中心
dubbo.registry.id = dubboRegistry
dubbo.registry.timeout=5000
dubbo.registry.address = 127.0.0.1:2181
dubbo.registry.client = curator
dubbo.registry.protocol=zookeeper

还有一个日志类,这个没有也行,我自己写着玩的

package com.demo.dubboconsumer.utils;import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import javax.servlet.http.HttpServletRequest;/*** AOP 日志*/
@Aspect
@Component
@Slf4j
public class MonitorAOP {@Autowiredprivate HttpServletRequest request;@Pointcut("execution(* com.demo.dubboconsumer.controller..*.*(..))")public void aspect(){}@Around("aspect()")public Object around(ProceedingJoinPoint joinPoint) throws Throwable {long start = System.currentTimeMillis();Object result = joinPoint.proceed();long end = System.currentTimeMillis();log.info(joinPoint + "|Time-Consuming:" + (end-start) + "|" + request.getRequestURI());return result;}@AfterThrowing(value = "aspect()", throwing = "e")public void afterException(JoinPoint joinPoint, Exception e){}
}

首先启动服务提供者

然后启动消费者

然后呢,我前面写了一个管控台的,不清楚请看这里,现在看 http://localhost:8080/#/。

点击Detail

可以看到消费者信息。

下面我们访问一下接口 http://localhost:9990/hello

访问的话我写的AOP日志拦截会输出信息

转载于:https://www.cnblogs.com/LUA123/p/10288979.html

Dubbo2.6.5入门——简单的HelloWorld相关推荐

  1. 【Java学习】从一个简单的HelloWorld项目中入门maven

    创建一个maven项目 这里推荐官方文档:maven官方文档 [注]此篇文章也是笔者学习笔记,如有错误,请见谅. [注]我把Goal翻译成命令.比如Plugin Goal: ps:我他喵的写了一大半的 ...

  2. java jni helloword_JNI入门教程之HelloWorld篇

    JNI入门教程之HelloWorld篇 来源:互联网  宽屏版  评论 2008-05-31 09:07:11 本文讲述如何使用JNI技术实现HelloWorld,目的是让读者熟悉JNI的机制并编写第 ...

  3. JNI入门学程之HelloWorld篇

    如果你对Jni不甚懂得,不晓得Jni是作什么的,如何树立一个基础的jni程序,或允许以参考下面下面这些文章: 应用VC++6.0实现JNI的最简单的例子 JNI入门学程之HelloWorld篇 SUN ...

  4. Makefile入门一、helloworld

    Makefile入门一.helloworld 1.了解gcc从源码到可执行文件的步骤 2.Makefile的helloworld 3.提到Makefile不得不了解gcc命令 1.了解gcc从源码到可 ...

  5. 1.1GTK+ 的简单程序HelloWorld

    1.1GTK+ 的简单程序HelloWorld 编译执行如图所看到的:

  6. linux平台 一个简单的helloworld动态库的制作与使用

    编写一个简单的动态库并调用. 动态库代码: HelloWorld.c /*** 简单动态库文件使用*/ #include "HelloWorld.h"void hello(void ...

  7. storm入门——本地模式helloworld

    创建maven项目,在pom.xml中加入以下配置: <dependency><groupId>org.apache.storm</groupId><arti ...

  8. JMeter压测入门简单使用

    JMeter压测入门简单使用. 下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-5.2. ...

  9. 01.最简单的helloworld

    最简单的helloworld,就是直接在主函数中利用输出 package com.nodrich.helloworld; public class helloworld01 {   public    ...

最新文章

  1. ESLint问题记录
  2. 【论文】ICLR 2020 九篇满分论文!!!
  3. jsp页面传递参数是如何与javabean进行关联的
  4. DJango操作MySQL数据库
  5. java 图片动画_java在窗口中添加图片做动画,怎么一闪一闪的?
  6. Caffe学习系列(9):运行caffe自带的两个简单例子
  7. 数学实验matlab课后习题答案,matlab数学实验教程答案
  8. draw python_科学网—Draw figures with Python - 高琳琳的博文
  9. 服务器linux启动,Linux 服务器环境启动
  10. 10-08 长假结束
  11. Lesson 73-74 The quality of our lives
  12. 【回归预测】基于matlab鲸鱼算法优化BP神经网络回归预测(多输入单输出)【含Matlab源码 1554期】
  13. wordpress如何获得当前用户的头像
  14. Orcad 使用MySQL数据库建立元件数据库完整步骤(30多张截图)
  15. 计算机组成原理00h,计算机组成原理 (2).doc
  16. 在阿里云上搭建自己的虚拟机(学习笔记)
  17. c语言键盘函数key,c语言获得键盘的按键
  18. 数学表达式基础——1 基本符号与术语
  19. android来电电话获取,Android获取来电号码代码
  20. 计算机组成原理实验tec2000,TEC-2000A计算机组成原理实验系统

热门文章

  1. python中去除全角空格
  2. PAT 数组元素循环右移问题(转自柳神)
  3. 如何快速搭建微信小程序
  4. Apache Drill Architecture Introduction
  5. java接口方式调用海康大华摄像机预览。
  6. smart gesture安装失败_3ds Max 2014 下载与安装步骤
  7. mysql替换空行解决导出到excel时由于内容有换行回车导致的问题
  8. 华为云服务器的使用方法
  9. cad角度命令怎么输入_怎么对角度进行尺寸标识 CAD钝角标注技巧
  10. 【181126】VC++开发的GIS系统源码无错完整版源代码