【Dubbo】Dubbo-Zookeeper实现消费者调用提供者

1.将服务者提供到注册中心(暴露服务)

(1)导入dubbo依赖(2.6.2)(maven的pom文件中)

<!-- dubbo -->
  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.6.2</version>
  </dependency>
  	<!-- 注册中心使用的是zookeeper,引入操作zookeeper的客户端 -->
  <dependency>
  	<groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>2.12.0</version>
  </dependency>

(2)配置provider.xml文件

<!-- 1.指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名) -->
	<dubbo:application name="user-service-provider"></dubbo:application>
	<!-- 2.指定注册中心的位置 -->
	<dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry>
	<!-- 3.指定通信规则(通信协议?通信端口) -->
	<dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
	<!-- 4.暴露服务 ref:指向服务的真正实现对象-->
	<dubbo:service interface="com.feng.gmall.service.UserService" ref="userServiceImpl"></dubbo:service>
	<!-- 服务的实现 -->
	<bean id="userServiceImpl" class="com.feng.gmall.service.impl.UserServiceImpl"></bean>

(3)初始化ioc容器,就会去注册

public class MainApplication {
	public static void main(String[] args) throws IOException {
		ClassPathXmlApplicationContext ioc = new ClassPathXmlApplicationContext("provider.xml");
		ioc.start();
		
		System.in.read();
	}
}

(4)发现dubbo控制台就出现了一个提供者,提供者注册成功!

2.消费者订阅 注册中心

(1)导入dubbo依赖(2.6.2)(maven的pom文件中)

<!-- dubbo -->
  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.6.2</version>
  </dependency>
  	<!-- 注册中心使用的是zookeeper,引入操作zookeeper的客户端 -->
  <dependency>
  	<groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>2.12.0</version>
  </dependency>

(2)配置consumer.xml文件

<dubbo:application name="order-service-consumer"></dubbo:application>
<dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry>
<!-- 声明需要调用的远程服务的接口,生成远程服务代理 -->
<dubbo:reference interface="com.feng.gmall.service.UserService" id="userService"></dubbo:reference>

这里的reference其实就相当于引用了另一个bean,只不过这个bean在另一个服务器的xml文件里。

&&注意之前提供者是service暴露服务,消费者是reference指向暴露的服务。

<dubbo:service interface="com.feng.gmall.service.UserService" ref="userServiceImpl">

(3)初始化ioc容器,调用对应的服务。

public class MainApplication {
	
	@SuppressWarnings("resource")
	public static void main(String[] args) throws IOException {
		ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("consumer.xml");
		
		OrderService orderService = applicationContext.getBean(OrderService.class);
		
		orderService.initOrder("1");
		System.out.println("调用完成...");
		System.in.read();
	}
}

(4)由此可见,消费者调用提供者成功!  

发布了103 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zzf_forgot/article/details/103335238