天天看點

springboot整合dubbo,zookeeper

linux使用docker安裝zookeeper:

docker pull registry.docker-cn.com/library/zookeeper

ps:如果說docker的基本使用如果不會的話可以在csdn中搜尋安裝教程

docker運作zookeeper:

docker run --name zk01 -p 2181:2181 --restart always -d zookeeper的id

springboot版本:1.5.12

弄兩個子產品(idea中的model),一個被調用方,一個調用方,pom檔案:0 

<!--整合zookeeper用戶端工具-->
<dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.1</version>
</dependency>
<!--dubbo-->
<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.1.0</version>
</dependency>
           

pom檔案調用方和被調用都是一樣的,接下來是配置檔案

被調用方

#本子產品的名稱
dubbo.application.name=provider-ticket
#zookeeper位址
dubbo.registry.address=zookeeper://192.168.217.134:2181
#服務的包位址
dubbo.scan.base-packages=com.hw.service
           

調用方:

dubbo.application.name=consumer-user
dubbo.registry.address=zookeeper://192.168.217.134:2181
dubbo.scan.base-packages=com.hw.service
           

這個套路呢,是這樣的:

首先在被調用方這裡寫好service層,準備好接口和實作類

然後在調用方這邊需要調用服務的時候寫好被調用方的接口,也就是和被調用方的接口一樣,但是沒有具體實作,在調用方這邊使用自動注入的方式将這個和被調用方一樣的接口,在調用方這邊調用這個接口的方法就行了,然後就能調用到别的子產品的那裡的具體的方法,調用前需要保證被調用方的服務是打開的,dubbo和zookeeper就是用來給這兩個子產品做連接配接用的,dubbo是連接配接,zookeeper是注冊中心,用來決定去找誰,dubbo用來做連接配接方式手段。

代碼示例:

被調用方

package com.hw.service;

/**
 * @program: springboot-06-dubbo
 * @description:
 * @author: hw
 * @create: 2019-01-18 14:38
 **/
public interface TicketService {

    public String Ticket();
}
           
package com.hw.service;

import com.alibaba.dubbo.config.annotation.Service;

import org.springframework.stereotype.Component;

/**
 * @program: springboot-06-dubbo
 * @description:
 * @author: hw
 * @create: 2019-01-18 14:39
 **/
@Component
@Service//将服務釋出出去,記得是dubbo包下的,不是spring
public class TicketServiceImpl implements TicketService {
    @Override
    public String Ticket() {
        return "<我被調用>";
    }
}
           

調用方

package com.hw.service;

/**
 * @program: springboot-06-dubbo
 * @description:
 * @author: hw
 * @create: 2019-01-18 14:38
 **/
public interface TicketService {

    public String Ticket();
}
           
package com.hw.service;

import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

/**
 * @program: springboot-06-dubbo
 * @description:
 * @author: hw
 * @create: 2019-01-18 14:44
 **/
@Service
public class UserService {
    @Reference
    TicketService ticketService;

    public void  hello(){
        String ticket = ticketService.Ticket();
        System.err.println(ticket);
    }
}
           

測試(首先啟動被調用子產品,linux的zookeeper要是啟動狀态)

完整代碼:

https://download.csdn.net/download/qq_41594146/10927363

點贊或者評論是我最大的動力,有問題歡迎留言或者聯系q:1559810637  

繼續閱讀