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爲註冊中心的樣例就成功了

 

 

 

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