dubbo与springboot的搭配使用

Posted 老渣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dubbo与springboot的搭配使用相关的知识,希望对你有一定的参考价值。

1.版本匹配问题

dubbo官网上是有说明的,也有具体的例子。https://github.com/apache/incubator-dubbo-spring-boot-project

1.x版本的springboot需要对应0.1版本的dubbo-spring-boot-starter跟较低版本的dubbo。

2.x版本的springboot对应0.2版本的dubbo-spring-boot-starter跟2.6.x版本的dubbo。

至于zookeeper倒是没有明确规定。

2.包说明

        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

zkclient包服务提供者有就行了,服务消费者可以不打。

其他的,依照官网,需要打的starter也有不同:

2.x的话要打三个包:

        <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>

1.x的话只打那个starter就可以了(注意要0.1.0的)。

还有,0.2.1的包经常搜不到,所以我打了0.2.0的,但是官网最新的是0.2.1。

3.不同版本的配置

体现在dubbo的service、reflect、跟配置信息的不同。

1.x版本:

服务提供者:

# dubbo springboot 配置
dubbo.application.name=dubbo-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.scan.base-packages=com.chriswei.bean
@Service
@Component
public class helloProviderimpl implements helloProvider {}

服务消费者:

# dubbo springboot 配置
dubbo.application.name=live-dubbo-comsumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
public class HelloConsumer {
    @Reference
    private helloProvider hello;
}

1.x版本这么匹配就算是能用了,控制台会打印出你发布出去的服务,以包全名形式,当然你可以打开zkCli.cmd,输入ls /查看一下你的服务发布出去没有。

2.x版本的话,依据官方示例:

服务提供者:

# Spring boot application
spring.application.name = dubbo-provider-demo
server.port = 9090
management.port = 9091

# Base packages to scan Dubbo Components (e.g., @Service, @Reference)
dubbo.scan.basePackages  =com.chriswei.bean

# Dubbo Config properties
## ApplicationConfig Bean
dubbo.application.id = dubbo-provider-demo
dubbo.application.name = dubbo-provider-demo

## ProtocolConfig Bean
dubbo.protocol.id = dubbo
dubbo.protocol.name = dubbo
dubbo.protocol.port = 12345

## RegistryConfig Bean
dubbo.registry.id = my-registry
dubbo.registry.address = zookeeper://127.0.0.1:2181
@Service(
        version = "1.0.0",
        application = "${dubbo.application.id}",
        protocol = "${dubbo.protocol.id}",
        registry = "${dubbo.registry.id}"
)
@Component
public class helloProviderimpl implements helloProvider {}

服务消费者:

# Spring boot application
spring.application.name = dubbo-consumer-demo
server.port = 8082
management.port = 8083


# Dubbo Config properties
## ApplicationConfig Bean
dubbo.application.id = dubbo-consumer-demo
dubbo.application.name = dubbo-consumer-demo

## ProtocolConfig Bean
dubbo.protocol.id = dubbo
dubbo.protocol.name = dubbo
dubbo.protocol.port = 12345
@Service
public class HelloConsumer {
    @Reference(version = "1.0.0",
            application = "${dubbo.application.id}",
            url = "dubbo://localhost:12345")
    private helloProvider hello;
}

特别要注意dubbo://localhost:12345这个写法,这里就这么写,而不能写zookeeper://127.0.0.1:2181。

以上是关于dubbo与springboot的搭配使用的主要内容,如果未能解决你的问题,请参考以下文章

dubbo和zookeeper

dubbo与springboot的三种整合方式

springboot项目关于文件的上传与下载

ali的dubbo与springboot

springboot与dubbo整合入门(三种方式)

SpringBoot与Dubbo整合-项目搭建