美文网首页高级javaJava 杂谈
spring|springboot集成dubbo

spring|springboot集成dubbo

作者: 微笑的小小刀 | 来源:发表于2019-08-05 10:53 被阅读1次
    image

    开头说两句

    小小刀博客: https://www.lixiang.red
    小小刀公众号: 程序员心情站

    image.png

    项目背景

    现在国内中小公司,远程调用基本上用的都是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|springboot集成dubbo

        本文链接:https://www.haomeiwen.com/subject/pqgbaqtx.html