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