项目结构
1、引入通用依赖
<!-- zookeeper -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<!-- dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.8.4</version>
</dependency>
2、创建生产者接口项目,编写接口(UserService.java)
public interface UserService {
/**
* 根据ID查询用户信息
* @param id
* @return
*/
String getUser(Long id);
}
3、创建生产者(provider)
1、pom.xml 中引入 生产者接口
<dependency>
<groupId>com.zktest</groupId>
<artifactId>zk-test-member-interface</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
2、实现生产者接口(UserServiceImpl.java)
public class UserServiceImpl implements UserService {
/**
* 获取用户信息
* @param id
* @return
*/
public String getUser(Long id) {
if (id == 1) {
return "张三";
} else {
return "李四";
}
}
}
3、编写生产者配置文件(provider.xml)
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="zk-provider1"/>
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!-- 用dubbo协议在29014端口暴露服务 -->
<dubbo:protocol name="dubbo" port="29014"/>
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.zktest.service.UserService" ref="userService"/>
<!-- 具体的实现bean -->
<bean id="userService" class="com.zktest.service.impl.UserServiceImpl"/>
</beans>
4、编写main方法(MemberApplication.java)
public class MemberApplication {
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("provider.xml");
applicationContext.start();
System.out.println("生产者 启动成功.");
// 让项目保持不关闭
System.in.read();
}
}
启动结果:
4、创建消费者
1、pom.xml 中引入 生产者接口
<dependency>
<groupId>com.zktest</groupId>
<artifactId>zk-test-member-interface</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
2、编写消费者配置文件(consumer.xml)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="zk-consumer" />
<!-- 使用multicast广播注册中心暴露发现服务地址 -->
<dubbo:registry protocol="zookeeper" address="zookeeper://127.0.0.1:2181" />
<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
<dubbo:reference id="userService" interface="com.zktest.service.UserService" />
</beans>
3、编写消费者mian方法
public class OrderApplication {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("consumer.xml");
applicationContext.start();
System.out.println("消费者 启动成功.");
UserService userService = (UserService)applicationContext.getBean("userService");
String user = userService.getUser(1L);
System.out.println(user);
}
}
4、启动效果