Dubbo服务环境搭建以及Dubbo服务的提供者和消费者配置详解
2017-11-10 11:04
495 查看
原文路径:http://blog.csdn.net/xinluqishi123/article/details/64124503
项目中引入了Dubbo,对外需要提供一个Dubbo的接口服务,编写了一个demo,在此提供出来,供初学者引用。
主要包括:在spring项目中引入对dubbo的支持,编写dubbo的provider和consumer,提供一个可测试的小demo。
目标:开发环境中添加对Dubbo的支持,编写Dubbo服务的提供者和消费者。
环境:Spring4.0, Dubbo2.5.3, Zookeeper3.4.6,maven3.3.9
步骤:
独立建立一个java maven项目,将所有的dubbo服务接口,这里只是接口以及包含的接口方法放置其中。
类似如下的结构:
app包下放置的就是你自己定义的dubbo接口和接口方法,这里我写的一个接口如下:
2
3
4
5
6
7
8
9
10
11
12
13
14
我这里写了一个发送短息的dubbo服务,可以调用这个接口发送短信,可以把短信内容,发送目标等等作为参数传递进来。单独建立一个项目存放接口是为了开发provider和consumer的时候可以方便以jar包的形式调用,因为你的provider或者consumer也许是在单独的项目中,而且也可能是不同的人编写。
你可以将这个项目导出jar包,并上传到你的私服上供其他的项目开发者下载依赖引用。
编写Dubbo服务的provider:
首先,在项目中加入对Dubbo服务的依赖支持:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
dubbo和spring融合的依赖引用,zookeeper和client都配置在这里了,client也许不需要,但是我都配置上了,最后一个是对步骤1中编写的dubbo-common项目的jar包依赖。
2
2
3
4
5
6
7
8
2
2
3
4
5
6
7
8
9
10
11
12
13
14
15
编写Dubbo服务consumer
首先,编写xml配置文件,可以叫做spring-dubbo-consumer.xml,(pom文件中依赖的引用参考provider的配置),
消费端应该与服务提供端处于不同的项目中,在一个项目中只能提供一个,否则会报错,但是可以配置多个接口。
2
3
消费端的应用名称应该与服务提供端的应用名称不同,这里是“dubbo_consumer”;
注册的zookeeper地址名称与服务提供端相同;
标签配置的是dubbo服务接口名称;声明这个接口对应的引用beanID是“sendMessageServiceConsumer”,在消费端调用这个接口时可以直接获取这个名字;url对应dubbo provider自己声明的服务地址,也就是对应标签的内容;
注意此处的timeout必须填写,否则会造成客户端连接很快过期而无法调用dubbo服务的情况。
其次,编写consumer的调用代码(此处简单调用):
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ok,一切就绪,我们可以在借助tomcat启动Dubbo服务的provider后,运行consumer的main函数,即可调用到provider的接口实现类,从而可以进行后续功能扩展和测试。
谢谢你能看到这里,如有错误请批评指正,也可以给我留言谈到其他问题。
项目中引入了Dubbo,对外需要提供一个Dubbo的接口服务,编写了一个demo,在此提供出来,供初学者引用。
主要包括:在spring项目中引入对dubbo的支持,编写dubbo的provider和consumer,提供一个可测试的小demo。
目标:开发环境中添加对Dubbo的支持,编写Dubbo服务的提供者和消费者。
环境:Spring4.0, Dubbo2.5.3, Zookeeper3.4.6,maven3.3.9
步骤:
独立建立一个java maven项目,将所有的dubbo服务接口,这里只是接口以及包含的接口方法放置其中。
类似如下的结构:
app包下放置的就是你自己定义的dubbo接口和接口方法,这里我写的一个接口如下:
package yourpackage.app; /** * 对外提供发送短信的Dubbo服务 * @author kevin shi * */ public interface ISendMessageService { void sendMessage(int serialNo, String destAddr_cmcc, String messageContent); }1
2
3
4
5
6
7
8
9
10
11
12
13
14
我这里写了一个发送短息的dubbo服务,可以调用这个接口发送短信,可以把短信内容,发送目标等等作为参数传递进来。单独建立一个项目存放接口是为了开发provider和consumer的时候可以方便以jar包的形式调用,因为你的provider或者consumer也许是在单独的项目中,而且也可能是不同的人编写。
你可以将这个项目导出jar包,并上传到你的私服上供其他的项目开发者下载依赖引用。
编写Dubbo服务的provider:
首先,在项目中加入对Dubbo服务的依赖支持:
<dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> <exclusions> <exclusion> <artifactId>spring</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency> <dependency> <groupId>yourpackage.common</groupId> <artifactId>dubbo-common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
dubbo和spring融合的依赖引用,zookeeper和client都配置在这里了,client也许不需要,但是我都配置上了,最后一个是对步骤1中编写的dubbo-common项目的jar包依赖。
其次,编写xml配置文件,可以叫做spring-dubbo-provider.xml,配置你的Dubbo服务的provider,因为有了接口你还需要写实现类实现这个接口服务提供给consumer:1
2
<!-- 注册dubbo服务的应用名称。 --> <dubbo:application name="dubbo_provider" /> <!-- 此处配置zookeeper注册中心的服务地址 --> <dubbo:registry address="zookeeper://10.11.12.13:1001" check="false"/> <!-- Dubbo服务提供者的服务地址和端口号 --> <dubbo:protocol host="127.0.0.1" name="dubbo" port="20891"></dubbo:protocol> <!-- 此处配置服务提供者的接口实现类,yourpackage.ISendMessageService是Dubbo服务的接口路径,sendMessageService是引用的接口实现类bean的名称。 --> <dubbo:service interface="yourpackage.ISendMessageService" ref="sendMessageService" timeout="1200000" />1
2
3
4
5
6
7
8
最后,编写Dubbo服务提供者的接口实现类:1
2
package yourpackage.common.service.impl; import org.springframework.stereotype.Service; import yourpackage.ISendMessageService; import yourpackage.common.utils.SMSUtil; @Service("sendMessageService") public class SendMessageServiceImpl implements ISendMessageService{ @Override public void sendMessage(int serialNo, String destAddr_cmcc, String messageContent) { SMSUtil.send(serialNo, destAddr_cmcc, messageContent); } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
编写Dubbo服务consumer
首先,编写xml配置文件,可以叫做spring-dubbo-consumer.xml,(pom文件中依赖的引用参考provider的配置),
消费端应该与服务提供端处于不同的项目中,在一个项目中只能提供一个,否则会报错,但是可以配置多个接口。
<dubbo:application name="dubbo_consumer" /> <dubbo:registry protocol="zookeeper" address="zookeeper://10.11.12.13:1001" /> <dubbo:reference interface="yourpackage.ISendMessageService" id="sendMessageServiceConsumer" url="dubbo://127.0.0.1:20891" timeout="1200000" />1
2
3
消费端的应用名称应该与服务提供端的应用名称不同,这里是“dubbo_consumer”;
注册的zookeeper地址名称与服务提供端相同;
标签配置的是dubbo服务接口名称;声明这个接口对应的引用beanID是“sendMessageServiceConsumer”,在消费端调用这个接口时可以直接获取这个名字;url对应dubbo provider自己声明的服务地址,也就是对应标签的内容;
注意此处的timeout必须填写,否则会造成客户端连接很快过期而无法调用dubbo服务的情况。
其次,编写consumer的调用代码(此处简单调用):
package yourpackage.common.service; import org.springframework.context.support.ClassPathXmlApplicationContext; import yourpackage.ISendMessageService; public class SendMessageServiceConsumerImpl { public static void handleSendMessage() { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "spring-dubbo-consumer.xml" }); context.start(); ISendMessageService sendService = (ISendMessageService) context.getBean("sendMessageServiceConsumer"); //这里对应配置文件中声明的beanId sendService.sendMessage(12345, "2222222", "3333333"); } public static void main(String[] args) { SendMessageServiceConsumerImpl.handleSendMessage(); } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ok,一切就绪,我们可以在借助tomcat启动Dubbo服务的provider后,运行consumer的main函数,即可调用到provider的接口实现类,从而可以进行后续功能扩展和测试。
谢谢你能看到这里,如有错误请批评指正,也可以给我留言谈到其他问题。
相关文章推荐
- Dubbo服务环境搭建以及Dubbo服务的提供者和消费者配置详解
- 【Dubbo分布式服务框架】4.基于API配置的服务提供者和消费者
- 【Dubbo分布式服务框架】2.基于配置的服务提供者和消费者
- 搭建Zabbix监控系统服务以及实现邮件报警功能配置详解
- dubbo简单搭建及dubbo提供者和消费者demo
- dubbo注册zookeeper集群配置,dubbo控制台查看提供者和消费者
- dubbo服务即做消费者又做提供者
- JAVAWEB开发之Maven的入门详解——Maven的安装以及项目的结构和Maven的使用以及私服的搭建与配置
- 构建Varnish缓存代理服务器以及反向代理Nginx服务配置详解
- dubbo做服务治理,搭建服务提供者provider和消费者consumer
- svn工作原理以及服务搭建和配置
- Ambari 服务配置以及 Alert 详解
- Windows 网络服务架构系列课程详解(一) ----DHCP服务器的搭建与配置
- apache基本配置管理一:apache服务介绍,以及简单搭建
- 第二章:Dubbo整合maven+spring+springmvc+mybatis之服务提供者搭建