5 springboot 集成dubbo
Apache Dubbo 是一款高性能Java RPC框架
由阿里巴巴开源并进入Apache孵化器,官网 http://dubbo.apache.org
提供服务化基础功能: 接口远程调用,智能负载均衡,服务发现与注册和运维治理界面等功能
集成SpringBoot中文说明地址 https://github.com/apache/incubator-dubbo-spring-boot-project/blob/master/README_CN.md
我们重新看下项目中的结构,做出如下修改
...somefun
......somefun-web (springboot项目 dubbo客户端)
......somefun-service-system
.........somefun-system-api (对外提供模块,提供接口和DTO)
.........somefun-system-service (springboot项目 dubbo服务提供端)
1我们将web模块开发成dubbo服务消费端部分
2将web模块中的pom去掉 somefun-system-service 依赖(somefun-system-api 依赖不去掉,通过此模块实现远程调用 而不侵入代码)
3将somefun-system-service模块修改为springboot项目独立运行
服务提供方的代码
somefun-system-service模块
pom文件
<?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">
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/>
</parent> <modelVersion>4.0.0</modelVersion> <artifactId>somefun-system-service</artifactId>
<dependencies>
<dependency>
<groupId>com.zhj</groupId>
<artifactId>somefun-system-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency> <dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version> <!-- 最新的0.2.1-SNAPSHOT 可以去上边的GitHub地址中下载编译 -->
</dependency> <!-- Dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.5</version>
</dependency>
<!-- Spring Context Extras -->
<dependency>
<groupId>com.alibaba.spring</groupId>
<artifactId>spring-context-support</artifactId>
<version>1.0.2</version>
</dependency> </dependencies> </project>
创建启动类SomefunSystemApplication
@SpringBootApplication (scanBasePackages={"com.zhj.somefun"})
public class SomefunSystemApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(SomefunSystemApplication.class)
.web(WebApplicationType.NONE) //非web方式运行
.run(args);
}
}
TestServiceImpl类:
注意下这时候的Service注解的包要引用 duboo中的service注解
package com.zhj.somefun.system.service.impl; import com.zhj.somefun.system.api.dto.TestDto;
import com.zhj.somefun.system.api.service.TestService; import com.alibaba.dubbo.config.annotation.Service; import java.util.ArrayList;
import java.util.Date;
import java.util.List; @Service
public class TestServiceImpl implements TestService { @Override
public List<TestDto> getTestList() {
List<TestDto> list = new ArrayList<>();
TestDto dto = new TestDto();
dto.setAge(18);
dto.setId(1);
dto.setName("姓名1");
dto.setCreatedate(new Date());
list.add(dto);
return list;
}
}
TestDto类:
要实现Serializable接口
public class TestDto implements Serializable{
private Integer id;
private String name;
public Integer getId() {
return id;
}
…… ……
}
application.yml文件
server:
port: 6666
spring:
application:
name: dubbo-provider-demo dubbo:
application:
id: dubbo-provider-demo
name: dubbo-provider-demo
monitor:
protocol: registry
protocol:
id: dubbo
name: dubbo
port: 12345
registry:
address: zookeeper://127.0.0.1:2181
id: my-registry
scan:
#扫描server包地址
basePackages: com.zhj.somefun.system.service
服务消费方
我们将web模块改造成dubbo调用方
pom 引入dubbo
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency> <!-- Dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.5</version>
</dependency>
<!-- Spring Context Extras -->
<dependency>
<groupId>com.alibaba.spring</groupId>
<artifactId>spring-context-support</artifactId>
<version>1.0.2</version>
</dependency>
Testcontroller控制器类
注解修改为Reference注解类
@RestController
public class Testcontroller { @Reference
private TestService testService; @GetMapping("/getlist")
public List<TestDto> getlist(){
return testService.getTestList();
} }
application.yml 文件
dubbo:
application:
id: dubbo-consumer-demo
name: dubbo-consumer-demo
monitor:
protocol: registry
protocol:
id: dubbo
name: dubbo
port: 12345
registry:
address: zookeeper://127.0.0.1:2181
server:
port: 8080
spring:
profiles:
active: dev
application:
name: dubbo-consumer-demo
因为我们注册中心使用的是zookeeper,我们可以在网上下载最新的zookeeper文件,运行起来即可。
运行服务器提供方的项目somefun-system-service
运行消费方的项目somefun-web
访问 http://localhost:8080/getlist ,
我们会发现已经可以返回 JSON数据
[{"id":1,"name":"姓名1","age":18,"createdate":"2018-12-22T06:58:43.535+0000"}]
这说明dubbo已经可以正常运行了
我们在运行项目中的时候编译器可能会打印错误日志
com.alibaba.dubbo.rpc.RpcException: No provider available from registry 127.0.0.1:2181 for service com.alibaba.dubbo.monitor.MonitorService on consumer 192.168.1.73 use dubbo version 2.6.5, please check status of providers(disabled, not registered or in blacklist).
这个因为 dubbo的监控中心没有接入 ,对于这篇代码来说暂时没有影响
这里只是介绍了最简单的springboot 接入dubbo,更新丰富的功能和详解的介绍在dubbo官网
http://dubbo.apache.org/zh-cn/
5 springboot 集成dubbo的更多相关文章
- SpringBoot集成Dubbo
(1).新建一个普通Maven项目,用于存放一些公共服务接口及公共的Bean等. 项目: 公共Bean: package cn.coreqi.entities; import java.io.Seri ...
- SpringBoot集成dubbo实例
项目总览图: 最下面有项目的pom,具体内容: 项目运行注意事项: 先启动 provider, 将providers.xml中 port 先修改为20187 执行test目录 下的DubboProvi ...
- springboot 集成 dubbo(一)简介
一.简介 1,springboot 是 一款快速开发的框架,减少了开发人员对配置文件的操作.采用一些注解来取代xml配置文件. 注解包含预先封装的注解和开发人员自定义注解.同时使用Maven.Grad ...
- dubbo入门和springboot集成dubbo小例子
从零开始搭建springboot-dubbo的例子 Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案 一. Dubbo的简单介绍 1. ...
- 又陷入知识盲区了,面试被问SpringBoot集成dubbo,我当时就懵了
前言 前两天在和粉丝聊天的时候,粉丝跟我说之前在面试的时候被问到SpringBoot这一块的知识被问的有点懵,和我问了不少这方面的东西.事后我想了想不如把这些东西分享出来吧,让更多的人看到,这样不管是 ...
- springboot集成dubbo服务报错No provider available for the service
检查了下发现是因为没有正确编写暴露服务的注解,需要注意下: @Service(interfaceClass = StudentService.) @Component public class Stu ...
- SpringBoot集成Dubbo+Zookeeper
目录 Spring版本 dubbo_zookeeper负责定义接口 dubbo_provider 服务提供者 dubbo_consumer服务使用者 Spring版本 不知道为啥,新创建的Spring ...
- springboot 集成dubbo
- springboot整合dubbo+zookeeper最新详细
引入 最近和小伙伴做一个比赛,处于开发阶段,因为涉及的服务比较多,且服务需要分开部署在不同的服务器上,讨论之后,打算采用分布式来做,之前学习springboot的时候,部分章节涉及到了springbo ...
随机推荐
- “全栈2019”Java第一百零二章:哪些作用域可以声明局部内部类?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 指针版P3690 【模板】Link Cut Tree (动态树)
题面 传送门 题解 鉴于数组版实在是太慢我用指针版重新写了一遍 代码基本是借鉴了lxl某道关于\(LCT\)的题 //minamoto #include<bits/stdc++.h> #d ...
- mysql 主从错误以及监控
同步中的常见的错误和处理 1.现象:在从库上面show slave status\G;出现下列情况, Slave_IO_Running: Yes Slave_S ...
- Elasticsearch(八)【NEST高级客户端--分析器】
分析 分析是将文本(如任何电子邮件的正文)转换为添加到反向索引中进行搜索的tokens或terms的过程. 分析由analyzer执行,分析器可以是内置分析器或每个索引定义的定制分析器. 书写分析器测 ...
- [HTML] 模板的用法
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta na ...
- jquery中的$()详解
一.jQuery的三种$() $号是jQuery“类”的一个别称,$()构造了一个jQuery对象.所以,“$()”可以叫做jQuery的构造函数. 1.$()可以是$(expresion),即css ...
- SSM搭建
SSM搭建 SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架.. Sprin ...
- php脚本cli 模式运行
参考文章 http://rapheal.sinaapp.com/2013/11/20/php_zend_hello_world/ http://www.douban.com/note/33788568 ...
- day5:python学习之集合
0. 集合的作用及特点 集合具有去重和关系测试两大作用,它具有无序的特点. list1 = [1,2,3,4,5,7,6,8,6,4] list1 = set(list1) print(list1) ...
- IIS7如何实现访问HTTP跳转到HTTPS访问 转的
加几句,1.安装url重写模块,不需要重启IIS,安装完了就能用.个人感觉比 IIS REWRITE组件更好用,iis rewrite是安装第三方的那种,不缴费只可以把所有规则写在一起,不能区别站点, ...