【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)由此可见,消费者调用提供者成功!  

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
服务消费者调用失败可能有多种原因,具体需要根据你的具体情况来分析。以下是一些可能导致服务消费者调用失败的常见问题和解决方法: 1. 检查服务提供者是否已经成功注册到 ZooKeeper。你可以使用 ZooKeeper 的命令行工具或可视化工具来检查服务提供者是否已经成功注册。如果服务提供者没有成功注册,那么服务消费者将无法找到该服务,调用也会失败。 2. 检查服务消费者是否正确引用了服务提供者的接口。服务消费者调用服务提供者时,需要正确引用服务提供者的接口,否则将无法调用成功。你可以检查服务消费者代码中引用服务提供者接口的地方,确保其与服务提供者的接口一致。 3. 检查服务消费者的网络连接是否正常。服务消费者需要能够正确连接到 ZooKeeper 和服务提供者,才能调用服务。你可以检查服务消费者的网络连接是否正常,确保其可以与 ZooKeeper 和服务提供者建立连接。 4. 检查服务提供者的配置是否正确。服务提供者的配置可能会影响服务消费者调用。你可以检查服务提供者的配置项,确保其与服务消费者的配置一致。 5. 检查服务提供者实现是否正确。如果服务提供者实现有问题,可能会导致服务消费者调用失败。你可以检查服务提供者实现代码,确保其正确实现了服务接口。 希望这些提示能够帮助你解决问题。如果你需要更多的帮助,请提供更多的上下文和错误信息,我会尽力为你提供帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值