快速搭建一個dubbo項目。
首先搭建好zookeeper註冊中心,這裏是windows,下載好zookeeper壓縮包,解壓,啓動,壓縮包裏–>bin–>zkServer.cmd
ZK啓動成功,注意,不要關閉這個控制檯。
服務提供端:
建立一個項目,dubboProvider,pom.xml中添加依賴
<properties>
<dubbo.version>2.5.3</dubbo.version>
<spring.version>4.3.6.RELEASE</spring.version>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<!-- spring相關 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.11</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.11</version>
</dependency>
</dependencies>
提供服務,所謂的服務是一個接口。
public interface ProviderDemoService {
String sayHello();
}
服務的實現類
public class ProviderDemoServiceImpl implements ProviderDemoService {
@Override
public String sayHello(){
String str = "hello,我是服務提供方!";
return str;
}
}
配置服務提供方的配置,新建一個dubbo-provider.xml
<!--提供方應用信息,用於計算依賴關係-->
<dubbo:application name="dubbo_provider"/>
<!--使用zookeeper註冊中心暴露服務地址-->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!--使用dubbo協議,在端口20880端口暴露服務-->
<dubbo:protocol name="dubbo" port="20880"/>
<!--聲明需要暴露的服務接口-->
<dubbo:service interface="service.ProviderDemoService" ref="providerDemoService"/>
<bean id="providerDemoService" class="service.impl.ProviderDemoServiceImpl"/>
另外新建一個springContext.xml,引入dubbo-provider.xml,啓動類加載這個配置文件並啓動。
public class ProviderApplication {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:springContext.xml");
applicationContext.start();
System.out.println("Provider start........");
System.in.read();
}
}
此時,服務提供者就已啓動服務了。同時,我們可以通過zkCli.cmd連接ZK,查看zookeeper的節點變化。
我們發現在zookeeper新增了一個/dubbo節點,查看這個節點下的子節點,發現又有一個節點,就是我們配置的服務路徑名作爲的節點名。再往下,看這個節點下,會有什麼呢?
這節點裏都放了什麼呢?這個等下再說。
服務消費者
建立一個項目,dubboConsumer,pom.xml中添加的依賴如提供者一樣,不重複了。
建立本地服務接口
public interface ProviderDemoService {
String sayHello();
}
配置服務消費者端dubbo-consumer.xml
<!--消費方應用信息-->
<dubbo:application name="dubbo_consumer"/>
<!--註冊中心暴露發現服務地址-->
<dubbo:registry address="zookeeper://127.0.0.1:2181" protocol="zookeeper"/>
<!--生成遠程服務代理-->
<dubbo:reference interface="service.ProviderDemoService" id="providerDemoService"/>
新建springContext.xml引入dubbo-consumer.xml,在啓動類中加載配置文件springContext.xml,並調用服務接口。
public class ConsumerApplication {
public static void main(String[] args) throws Exception{
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:springContext.xml");
applicationContext.start();
ProviderDemoService providerDemoService =(ProviderDemoService) applicationContext.getBean("providerDemoService");
String str = providerDemoService.sayHello();
System.out.println(str);
System.in.read();
}
}
最後控制檯輸出:
hello,我是服務提供方!
可以看出zk節點下的信息,