Dubbo服务环境搭建以及Dubbo服务的提供者和消费者配置详解

6 篇文章 0 订阅

原文路径: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

步骤:

  1. 独立建立一个java maven项目,将所有的dubbo服务接口,这里只是接口以及包含的接口方法放置其中。 
    类似如下的结构: 
    这里写图片描述
    app包下放置的就是你自己定义的dubbo接口和接口方法,这里我写的一个接口如下:
package yourpackage.app;

/**
 * 对外提供发送短信的Dubbo服务
 * @author kevin shi
 *
 */

public interface ISendMessageService {

    void sendMessage(int serialNo, String destAddr_cmcc, String messageContent);

}

我这里写了一个发送短息的dubbo服务,可以调用这个接口发送短信,可以把短信内容,发送目标等等作为参数传递进来。单独建立一个项目存放接口是为了开发provider和consumer的时候可以方便以jar包的形式调用,因为你的provider或者consumer也许是在单独的项目中,而且也可能是不同的人编写。 
你可以将这个项目导出jar包,并上传到你的私服上供其他的项目开发者下载依赖引用。

  1. 编写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>dubbo和spring融合的依赖引用,zookeeper和client都配置在这里了,client也许不需要,但是我都配置上了,最后一个是对步骤1中编写的dubbo-common项目的jar包依赖。
其次,编写xml配置文件,可以叫做spring-dubbo-provider.xml,配置你的Dubbo服务的provider,因为有了接口你还需要写实现类实现这个接口服务提供给consumer:
<!-- 注册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" 
最后,编写Dubbo服务提供者的接口实现类:
    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);
        }
    }编写Dubbo服务consumer 
  1. 首先,编写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" />消费端的应用名称应该与服务提供端的应用名称不同,这里是“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();
        }
    }ok,一切就绪,我们可以在借助tomcat启动Dubbo服务的provider后,运行consumer的main函数,即可调用到provider的接口实现类,从而可以进行后续功能扩展和测试。

谢谢你能看到这里,如有错误请批评指正,也可以给我留言谈到其他问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Dubbo 是一种分布式服务框架,它可以帮助开发者快速构建分布式应用,供了服务的注册,发现,调用等功能。下面是 Dubbo 消费者提供者配置。 ## Dubbo 提供者配置 Dubbo 提供者需要在服务启动的时候注册到注册中心,以供消费者发现和调用。Dubbo 提供者配置,可以通过 XML 或者注解的方式进行配置。下面是 Dubbo 提供者的 XML 配置示例: ```xml <dubbo:application name="provider" /> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <dubbo:protocol name="dubbo" port="20880" /> <dubbo:service interface="com.example.service.UserService" ref="userService" /> ``` - `dubbo:application`: 配置 Dubbo 应用的名称,用于在注册中心进行标识。 - `dubbo:registry`: 配置注册中心的地址,这里使用了 ZooKeeper 作为注册中心,地址为 `zookeeper://127.0.0.1:2181`。 - `dubbo:protocol`: 配置 Dubbo 的协议和端口号,这里使用了 Dubbo 协议,端口号为 `20880`。 - `dubbo:service`: 配置服务接口和实现类,`interface` 属性指定了服务接口,`ref` 属性指定了服务的实现类。可以通过 `timeout`、`loadbalance` 等属性设置服务调用的超时时间和负载均衡策略等。 ## Dubbo 消费者配置 Dubbo 消费者需要从注册中心获取提供者的地址,通过接口调用提供者服务Dubbo 消费者配置,同样可以通过 XML 或者注解的方式进行配置。下面是 Dubbo 消费者的 XML 配置示例: ```xml <dubbo:application name="consumer" /> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <dubbo:reference id="userService" interface="com.example.service.UserService" /> ``` - `dubbo:application`: 配置 Dubbo 应用的名称,用于在注册中心进行标识。 - `dubbo:registry`: 配置注册中心的地址,这里使用了 ZooKeeper 作为注册中心,地址为 `zookeeper://127.0.0.1:2181`。 - `dubbo:reference`: 配置接口的引用,`id` 属性指定了引用的名称,`interface` 属性指定了要引用的接口。可以通过 `check`、`retries` 等属性设置服务的健康检查和重试次数等。 以上是 Dubbo 消费者提供者的基本配置,可以根据自己的需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值