SprinBoot整合Dubbo,注册中心选取Zookeeper

提起dubbo,首先想到的是异步调用框架,同时提供了对springboot各种格式的支持,接下来是以spring boot的注解方式来简单描述spring boot整合dubbo的方式

官方文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html

首先新建dubbo-test项目,其中有三个module,分别是dubbo-api,dubbo-provider以及dubbo-consumer;dubbo-api模块负责定义api接口,dubbo-provider模块负责对api接口进行逻辑实现以及服务注册,dubbo-consumer模块负责调用api中的接口,并通过相应注解来调用具体api的实现逻辑以及服务消费者的注册功能。

其中pom.xml文件(父级)中的主要依赖如下:

<dependency>
			<groupId>org.apache.dubbo</groupId>
			<artifactId>dubbo-spring-boot-starter</artifactId>
			<version>2.7.3</version>
		</dependency>

		<dependency>
			<groupId>org.apache.dubbo</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.7.3</version>
		</dependency>


		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.4.6</version>
		</dependency>

		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-recipes</artifactId>
			<version>2.13.0</version>
		</dependency>

dubbo-api模块负责定义api接口:

dubbo-provider模块需要引入dubbo-api模块,并且配置文件application.properties需要作如下配置:

dubbo-provider模块对api接口的实现:

package com.dubbo.provider.service.impl;

import com.dubbo.api.UserService;
import org.apache.dubbo.config.annotation.Service;

@Service(interfaceName = "userservice")
public class UserServiceImpl implements UserService {

    @Override
    public String getUserName(String username) {
        return username;
    }
}

注意的是这里@Service注解使用的是dubbo中的包,同时dubbo-provider模块的启动类需要添加@EnableDubbo注解来扫描服务实现类

dubbo-consumer模块也需要引入dubbo-api模块,同时配置文件application.properties需要做如下配置:

然后dubbo-consumer调用dubbo-api接口的逻辑如下:

import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Reference(interfaceName = "username")
    private UserService userService;

    @GetMapping("/{userName}")
    public String getUserName(@PathVariable(name = "userName") String userName) {
        String name = userService.getUserName(userName);
        return name;
    }
}

其中@Reference注解相当于@Authwire注解,只是这里也是引入的dubbo中的包,同时dubbo-consumer模块的启动类也需要添加@EnableDubbo注解

测试:

至此,springboot整合dubbo,zookeeper为注册中心的样例就成功了

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章