windows下本地运行和消费dubbo服务

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 最简单的dubbo应用包括三部分:服务提供者provider、服务消费者consumer、注册中心。   前两个都是我们自己编写的,第三个注册中心推荐使用稳定性更好的zookeeper。

最简单的dubbo应用包括三部分:服务提供者provider、服务消费者consumer、注册中心。

 

前两个都是我们自己编写的,第三个注册中心推荐使用稳定性更好的zookeeper。

 

所以我们需要先下载zookeeper: http://apache.fayea.com/zookeeper/current/

下载后解压到某个目录,进入里面的conf目录。将zoo_sample.cfg复制一份,改名为zoo.cfg。

修改其内容为

tickTime=2000

initLimit=10

syncLimit=5

dataDir=D:\\data\\zookeeper

clientPort=2181

 其中的dataDir可以自由修改。

进入zookeeper的bin目录,运行zkServer.cmd

 { 要测试是否运行良好的话可以运行zkCli.cmd }

 

 

接下来打开eclipse,新建maven项目,arctype使用默认的quickstart就可以。

修改pom.xml文件:

<dependencies>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.0.13</version>
		</dependency>
		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.3.6</version>
			<exclusions>
				<exclusion>
					<groupId>log4j</groupId>
					<artifactId>log4j</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.16</version>
		</dependency>
	</dependencies>

 

在Java源文件夹下新建接口,这个接口要给provider和consumer都使用

public interface DemoService {
	public void sayHello();
	
	public String returnHello();
	
	public MsgInfo returnMsgInfo(MsgInfo info);
}

 新建其实现类

public class DemoServiceImpl implements DemoService{

	public void sayHello() {
		System.err.println("Hello world.");
	}

	public String returnHello() {
		return "hello world";
	}

	public MsgInfo returnMsgInfo(MsgInfo info) {
		info.getMsgs().add("done!");
		return info;
	}

}

 新建一个测试实体

public class MsgInfo implements Serializable {

	int id;
	String name;
	List<String> msgs;

//getters setters

}

 

在资源文件夹下新建目录spring(虽然不是必要的,不过我们是和spring集成的)。

在里面新建xml文件dubbo-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="hello-world-app" />

	<dubbo:registry  protocol="zookeeper" address="127.0.0.1:2181" /> 

	<!-- 用dubbo协议在20880端口暴露服务 -->
	<dubbo:protocol name="dubbo" port="20880" />

	<!-- 声明需要暴露的服务接口 -->
	<dubbo:service interface="com.abc.qkdb.DemoService" ref="demoService" />

	<!-- 和本地bean一样实现服务 -->
	<bean id="demoService" class="com.abc.qkdb.DemoServiceImpl" />

</beans>

 其中的<dubbo:registry>就是注册中心这里使用的是zookeeper,其他选项可以参考http://dubbo.io/Administrator+Guide-zh.htm#AdministratorGuide-zh-Redis%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83%E5%AE%89%E8%A3%85

相同目录下新建dubbo-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="consumer-of-helloworld-app" />
         <!--zookeeper注册中心 -->
         <dubbo:registry  protocol="zookeeper" address="127.0.0.1:2181" /> 

          <!-- 生成远程服务代理,可以和本地bean一样使用demoService-->
         <dubbo:reference id="demoService" interface="com.abc.qkdb.DemoService" />
</beans>

 注意里面也包含<dubbo:registry>结点。

 

 

回到Java文件夹,新建服务类

import java.io.IOException;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class LuncherProvider {
	public static void main(String[] args) throws InterruptedException, IOException {
		LuncherProvider provider = new LuncherProvider();
		provider.start();
		System.in.read();
	}

	void start() {
		String configLocation = "spring/dubbo-provider.xml";
		ApplicationContext context = new ClassPathXmlApplicationContext(configLocation);
		String[] names = context.getBeanDefinitionNames();
		for (String name : names) {
			System.err.println(name);
		}
	}
}

 新建消费者类

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class LuncherConsumer {
	public static void main(String[] args) {
		LuncherConsumer provider = new LuncherConsumer();
		provider.start();
	}

	void start() {
		String configLocation = "spring/dubbo-consumer.xml";
		ApplicationContext context = new ClassPathXmlApplicationContext(configLocation);
		DemoService ds = (DemoService) context.getBean("demoService");
		String[] names = context.getBeanDefinitionNames();
		System.out.print("Beans:");
		for (String string : names) {
			System.out.println(string);
		}
		
		MsgInfo info = new MsgInfo();
		info.setId(1);
		info.setName("ruisheh");
		List<String> msgs = new ArrayList<String>();
		msgs.add("I");
		msgs.add("am");
		msgs.add("test");
		info.setMsgs(msgs);

		System.out.println(ds.returnMsgInfo(info).getMsgs());
		System.err.println(ds.returnHello());
	}
}

 

编码完毕。

先运行LuncherProvider类,没有错误输出后(会输出context中的bean)运行LuncherConsumer,输出

[I, am, test, done!]

hello world

即为正常。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
21天前
|
XML Dubbo Java
【Dubbo3高级特性】「框架与服务」服务的异步调用实践以及开发模式
【Dubbo3高级特性】「框架与服务」服务的异步调用实践以及开发模式
25 0
|
1月前
|
Linux Shell Windows
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
|
1月前
|
存储 安全 数据安全/隐私保护
Windows部署WebDAV服务并映射到本地盘符实现公网访问本地存储文件
Windows部署WebDAV服务并映射到本地盘符实现公网访问本地存储文件
251 0
|
2月前
|
Java Unix 应用服务中间件
使用java service wrapper把windows flume做成服务
使用java service wrapper把windows flume做成服务
|
2月前
|
Java Linux Windows
windows实现自动部署jar包运行程序
windows实现自动部署jar包运行程序
39 0
|
17天前
|
人工智能 机器人 编译器
【C++】Windows端VS code中运行CMake工程(手把手教学)
【C++】Windows端VS code中运行CMake工程(手把手教学)
|
2月前
|
Dubbo Java 应用服务中间件
Dubbo服务暴露机制解密:深入探讨服务提供者的奥秘【九】
Dubbo服务暴露机制解密:深入探讨服务提供者的奥秘【九】
23 0
|
2月前
|
缓存 运维 监控
Dubbo服务降级:保障稳定性的终极指南【六】
Dubbo服务降级:保障稳定性的终极指南【六】
32 0
|
1月前
|
SpringCloudAlibaba Dubbo Java
SpringCloud Alibaba集成Dubbo实现远程服务间调用
SpringCloud Alibaba集成Dubbo实现远程服务间调用
|
22天前
|
Shell Windows
Windows服务器 开机自启动服务
Windows服务器 开机自启动服务
13 0

热门文章

最新文章