Dubbo的使用入门
一、包引入
1、父模块pom.xml中加入依赖:
<!-- dubbo -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
我这里还引入了SpringBoot和一些常用组件
<!--Add Spring boot Parent-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
</parent> <dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<!--SpringBoot核心模块,包括自动配置支持、日志和YAML-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--测试模块,包括JUnit、Hamcrest、Mockito-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency> <!--热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.22</version>
</dependency>
<!-- JPA操作数据库 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
<!-- dubbo -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<!--Web模块-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.51</version>
</dependency>
</dependencies>
2、服务提供者子模块的application.properties中加入下列配置
server.port=
spring.application.name=dubbo-provider-users
dubbo.application.name=dubbo-provider-users
dubbo.registry.protocol=zookeeper
dubbo.registry.address=172.16.4.132:|172.16.4.131:|172.16.4.133:
dubbo.protocol.name=dubbo
dubbo.protocol.port=
dubbo.scan.base-packages=com.test.usersservice
dubbo.consumer.timeout=
dubbo.provider.timeout=
dubbo.registry.timeout=
dubbo.consumer.retries=
dubbo.provider.retries=
dubbo.consumer.callbacks=
dubbo.provider.callbacks=
dubbo.consumer.check=false
dubbo.registry.check=false
dubbo.application.qos-enable=false
发部服务,可以这样:
import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.util.List; @Service(version = "1.0.0")
@RestController
public class UserProvider implements IUserProvider { @Resource
private TenantBusiness tenantBusiness; @Override
public FuncResultBo<UserVo> createUser(UserVo user, ApiKeyVo api_info) {
return tenantBusiness.createUser(user, api_info);
}
}
3、服务提供者SpringBoot启动类中加入:@EnableDubbo属性标记,例如我的:
package com.test.usersservice; import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; @Configuration
@SpringBootApplication()
@ComponentScan({"com.test"})
@EnableJpaRepositories(basePackages = {"com.test.repository"})
@EnableAutoConfiguration
@EntityScan("com.test.domain.po")
@EnableDubbo
public class UsersProviderApplication { public static void main(String[] args) {
SpringApplication.run(UsersProviderApplication.class, args);
}
}
4、消费者的application.properties中加入:
spring.application.name=dubbo-consumer-backendsync
dubbo.application.name=dubbo-consumer-backendsync
dubbo.registry.protocol=zookeeper
dubbo.registry.address=172.16.4.131:|172.16.4.132:|172.16.4.133:
dubbo.scan.base-packages=com.test.syncbackend
dubbo.protocol.name=dubbo
dubbo.protocol.port=
dubbo.consumer.timeout=
dubbo.provider.timeout=
dubbo.registry.timeout=
dubbo.consumer.retries=
dubbo.provider.retries=
dubbo.consumer.callbacks=
dubbo.provider.callbacks=
dubbo.consumer.check=true
dubbo.registry.check=false
dubbo.application.qos-enable=false
5、在消费者启动类中,可以加入EnableDubbo属性标记
@SpringBootApplication
@EnableAutoConfiguration
@EntityScan("com.test.domain.po")
@ComponentScan("com.test")
@PropertySource({"classpath:schedule.properties"})
@EnableJpaRepositories(basePackages = "com.test.repository")
@EnableScheduling
@EnableDubbo
public class BackendApplicationServer {
public static void main(String[] args) {
SpringApplicationBuilder springApplicationBuilder = new SpringApplicationBuilder(BackendApplicationServer.class);
springApplicationBuilder.web(WebApplicationType.NONE);
springApplicationBuilder.run(args);
}
}
消费者中调用服务:
@Reference(version = "1.0.0", timeout = 360000)
private ITenantProvider iTenantProvider = null;
Reference属性类完整路径位于:import com.alibaba.dubbo.config.annotation.Reference;
Dubbo的使用入门的更多相关文章
- Maven+SpringMVC+Dubbo 简单的入门demo配置
转载自:https://cloud.tencent.com/developer/article/1010636 之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程 ...
- Dubbo实战快速入门 (转)
Dubbo是什么? Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封 ...
- ZooKeeper分布式专题与Dubbo微服务入门
第1章 分布式系统概念与ZooKeeper简介对分布式系统以及ZooKeeper进行简介,使得大家对其有大致的了解1-1 zookeeper简介1-2 什么是分布式系统1-3 分布式系统的瓶颈以及zk ...
- Dubbo教程:入门到实战
Dubbox简介 Dubbox 是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo ,被国内电商及互联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行优化,并继续维护 ...
- Dubbo3 源码系列 Dubbo“纠葛”(入门篇)
日期 更新说明 2022年5月28日 spring xml部分解读 2022年6月3日 spring annotation部分解读 人生不相见, 动如参与商. 今夕复何夕, 共此灯烛光. 少壮能几时, ...
- 深度学习Dubbo系列(入门开篇)
此文档为系列学习文档 这系列文档详细讲解了dubbo的使用,基本涵盖dubbo的所有功能特性.在接下来的文章里会详细介绍. 如果你正依赖dubbo作为你业务工程的RPC通信框架,这里可以作为你的参考手 ...
- dubbo 接口初入门
最近公司开发新的一套系统,开发出来的方案会基于dubbo分布式服务框架开发的,那么什么是dubbo,身为测试的我,第一眼看到这个,我得去了解了解dubbo是啥玩意,为开展的测试工作做准备,提前先学 d ...
- 170328、Maven+SpringMVC+Dubbo 简单的入门demo配置
之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程序猿来说,真是一个好消息.最近有时间了,打算做一个demo把dubbo在本地跑起来先. 先copy一段dubbo ...
- 【Dubbo】Dubbo+ZK基础入门以及简单demo
参考文档: 官方文档:http://dubbo.io/ duboo中文:https://dubbo.gitbooks.io/dubbo-user-book/content/preface/backgr ...
随机推荐
- BBC 记录片planet earth
He'll have to remain on guard for another two weeks, but in the jungle, just surviving the day can c ...
- brew装snappy
brew装snappy,我在mac上已经开了socks5代理,也尝试了lantern或者duotai.org,结果都下载不动. 解决方法:把snappy包手动从浏览器下载,然后放到缓存目录,再执行br ...
- 微信h5支付源码DEMO参考
类库代码 wechatH5Pay.php <?php //use Flight; /** * 微信支付服务器端下单 * 微信APP支付文档地址: https://pay.weixin.qq.co ...
- IntentService用法
IntentService 用完即走 IntentService,可以看做是Service和HandlerThread的结合体,在完成了使命之后会自动停止,适合需要在工作线程处理UI无关任务的 ...
- gitlab的docker安装,非标准端口,如何处理?
这个问题的定义是: 如果我们不是用的80端口对外提供服务, 但gitlab的docker容器里的nginx却是80端口, 那么,在我们clone代码时,带的Http地址也会是80端口,这显然会出现问题 ...
- JVM GC-----4、finalize()方法
finalize()方法是Object类中定义的protect方法.每一个类都可以重写该方法,给出自己的实现.当类在被回收期间,这个方法就可能会被调用到. 为什么说可能?这是由于finalize()的 ...
- P2031 脑力达人之分割字串
P2031 脑力达人之分割字串字符串dp,f[i]表示主串到第i个字符,最多能分割成多少子串.f[i]=max(f[i],f[k]+1);k是能匹配到的前一位. #include<iostrea ...
- Docker镜像优化
前言 上篇博文说到使用Visual Studio Tools for Docker帮助我们生成Dockerfile,现在我们讨论下生成的Dockerfile的优劣. 一.以往Dockerfile构建模 ...
- Java并发编程快速学习
上周的面试中,被问及了几个关于Java并发编程的问题,自己回答的都不是很系统和全面,可以说是"头皮发麻",哈哈.因此果断购入<Java并发编程的艺术>一书,学习后的体会 ...
- SpringMvc @ResponseBody
一.@Response使用条件 二. @Response在最小配置.jackson的jar包情况下,json中包含的日期类型字段都是以时间戳long类型返回 三. Jack序列化对象转为JSON的限制 ...