spring|springboot 集成 dubbo

本贴最后更新于 1567 天前,其中的信息可能已经沧海桑田

开头说两句

Java 基础 Demo 站: https://www.javastudy.cloud
Java 中高级开发博客: https://www.lixiang.red
Java 学习公众号: java 技术大本营
java_subscribe

项目背景

现在国内中小公司,远程调用基本上用的都是 dubbo ,当然小刀的公司也不例外,我们以前用的是 dubbo 2.4.x 的版本,虽然也能使用,但是本着新项目新技术的追求,我们更新成了 dubbo 2.7.x 的版本

springboot 集成 dubbo 的应用

以往的集成方式

引入 dubbo , zk 的 jar 包

@ImportResource({"classpath*:dubbo/*.xml"})
public class Start extends SpringBootServletInitializer

dubbo.properties 内容如下:

dubbo.container=logback,spring
dubbo.application.name=dubbo-service
dubbo.registry.address=zookeeper://zookeeper.xxx.com:2181
dubbo.log4j.file=logs/dubbo-service.log
dubbo.log4j.level=WARN
dubbo.protocol.port=20782
dubbo.protocol.dispatcher=message
dubbo.protocol.threadpool=fixed
dubbo.protocol.threads=200

还有 dubbo.provider.xml

<?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:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <dubbo:service timeout="30000" interface="com.xxx.xxx.xxxxService" ref="xxxxService"/>
 
</beans>

这时候去 dubbo-admin 上应该可以看到应用注册上去了

新的集成方式

借着上一波用 gradle 搭的多模块的架子,今天我们来往里面添加 dubbo
官方文档:
https://github.com/apache/dubbo-spring-boot-project
先引入相关的依赖,这里就要注意了,依赖放在 service 层,因为是 service 层才需要提供 dubbo 服务出去. 当然为了省事的话,也可以放到 business-impl 里面,因为我们通过会调用别的项目的 dubbo 接口,但是严格来说,基础服务类的应用,只从自己的数据库取数据,然后通过 dubbo 接口返回给业务应用.所以在基础应用中,只能把依赖引在 service 层,业务应用可以直接引在 business-impl 层

服务提供层

	implementation 'org.springframework.boot:spring-boot-starter'

	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	compile group: 'org.apache.dubbo', name: 'dubbo-spring-boot-starter', version: '2.7.1'
	compile (group: 'org.apache.dubbo', name: 'dubbo-dependencies-zookeeper', version: '2.7.2')
			{
				exclude group:'org.slf4j'
			}
	compile ('org.apache.dubbo:dubbo:2.7.2'){
		exclude group: 'org.springframework'
		exclude group: 'javax.servlet'
		exclude group: 'log4j'
	}

application.properties 中进行配置:

dubbo.application.name=forest-service
dubbo.registry.address=zookeeper://zookeeper.xxx.com:30038
dubbo.protocol.name=dubbo
dubbo.protocol.port=21899
dubbo.config-center.address=zookeeper://zookeeper.xxx.com:30038
dubbo.metadata-report.address=zookeeper://zookeeper.xxx.com:30038
dubbo.scan.base-packages=com.platform.market.service.impl

此时代码目录结构为:
image.png

其中,在实现类上,需要添加以下两个注解:

@Service
@Component
public class ItemServiceImpl implements ItemService 

注意是 dubbo 包里面的 service 注解

然后我们在 dubbo-admin 中可以看到我们启动的服务
image.png

服务消费层

这边就很简单了,一句话搞定,把以前我们写的 @Autowire 换成 dubbo 包内的 @Reference
就可以了
配置文件中只需要引注册地址就可以了,

dubbo.application.name=xxxx-xxxx
dubbo.registry.address=zookeeper://zookeeper.xxx.com:30038

最后说两句

各位小伙伴们有什么问题可以随时和小刀联系: best396975802
如果文章对您有帮助,方便的话顺手帮忙点下广告,感谢您的支持

  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    941 引用 • 1458 回帖 • 151 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 609 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3168 引用 • 8207 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...