dubbo消费者需要配置端口吗_5步构建一个dubbo服务

本文介绍了如何使用Dubbo构建一个短信服务,包括生产者的服务创建、接口定义与实现、dubbo依赖配置及服务发布,以及消费者的项目创建、依赖添加、dubbo配置和服务调用过程。
摘要由CSDN通过智能技术生成

一个分布式场景存在两种角色,提供服务的我们通常称为生产者,调用服务的我们称为消费者,生产者发布服务,消费者调用生产者的服务;我们的系统中不可或缺的是一些基础服务比如:短信、支付、文件上传、邮件,我们今天就用dubbo模拟发布一个短信服务,其他任意客户端都可以通过dubbo调用短信服务。

生产者

1、创建服务

项目名:dubbo-sms

模块:sms-api(对外统一调用接口规范)

模块:sms-provide(服务具体发布和实现)

2、定义发送短信API、和实现

(1)在sms-api 中定义短信发送的接口和dto对象

public interface SmsService {

 /**
     * 发送短信
     */
 public void sendSms(SmsDto smsDto);


}
public class SmsDto implements Serializable{

 private String mobile;

 private  String msg;

 public String getMobile() {
 return mobile;
    }

 public void setMobile(String mobile) {
 this.mobile = mobile;
    }

 public String getMsg() {
 return msg;
    }

 public void setMsg(String msg) {
 this.msg = msg;
    }

 @Override
 public String toString() {
 return "SmsDto{" +
 "mobile='" + mobile + ''' +
 ", msg='" + msg + ''' +
 '}';
    }
}

(2)sms-provide 模块 pom文件增加sms-api依赖

<dependency>
 <artifactId>sms-api</artifactId>
 <groupId>com.dubbo</groupId>
 <version>1.0-SNAPSHOT</version>
</dependency>

(3)在sms-provide 中实现短信发送功能

public class SmsServiceImpl implements SmsService {

 public void sendSms(SmsDto smsDto) {
        System.out.println("短信发送成功"+smsDto.toString());
    }
}

3、增加dubbo依赖

sms-provide模块 pom文件增加dubbo依赖

<dependency>
 <groupId>com.alibaba</groupId>
 <artifactId>dubbo</artifactId>
 <version>2.5.3</version>
</dependency>

4、增加dubbo配置文件,配置对外发布服务信息

在sms-provede 的resource/META-INF/spring(没有目录则新建) 目录下新建配置文件sms-provice.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="dubbo-sms" owner="dp"/>

 <!--使用的注册中心,N/A为不使用注册中心-->
 <dubbo:registry address="N/A"/>

 <!--发布服务使用的协议、端口-->
 <dubbo:protocol name="dubbo" port="20880"/>

 <!--配置需要对外发布的接口-->
 <dubbo:service interface="com.dubbo.sms.api.SmsService" class="com.dubbo.sms.service.SmsServiceImpl"/>

</beans>

5、增加dubbo启动类

package com.dubbo.sms;

import com.alibaba.dubbo.container.Main;

public class DubboStart {

 public static void main(String[] args) {
        Main.main(args);
    }

}

启动dubbo显示如下信息则发布成功

682875171e7359f71976b9f147769266.png

dubbo-sms项目整体结构

9eadf8a5b2a549486e32a84a1f94c41c.png

消费者

1、创建项目

创建项目:dubbo-sms-consumer

2、增加依赖

在增加依赖前首先把sms-api 打包到maven仓库。

83b792590bcc7435d46cbfc549b7bd9d.png

在消费端项目dubbo-sms-consumer引入dubbo和api依赖

<dependencies>
<dependency>
<artifactId>sms-api</artifactId>
<groupId>com.dubbo</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
</dependency>
</dependencies>

3、增加dubbo配置文件

dubbo-sms-consumer 项目resource目录下增加dubbo-sms-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="dubbo-sms-consumer" owner="dp"/>

 <!--发布服务使用的协议、端口-->
 <dubbo:protocol name="dubbo" port="20880"/>

 <!--配置需要引入的dubbo接口   这里的url对应服务发布出来的url-->
 <dubbo:reference  id="smsService" interface="com.dubbo.sms.api.SmsService" url="dubbo://192.168.30.1:20880/com.dubbo.sms.api.SmsService"/>

</beans>

注意: <dubbo:reference > 中的URL 对应生产者启动时打印的服务url

f427e4ed5b406205cdbd4c55f3017789.png

4、调用服务

import com.dubbo.sms.api.SmsService;
import com.dubbo.sms.dto.SmsDto;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Created by Administrator on 2019/5/20.
 */
public class DubboConsumer {

 public static void main(String[] args) {
 //根据xml实例化bean
 ClassPathXmlApplicationContext context =new ClassPathXmlApplicationContext("sms-consumer.xml");
        SmsService smsService=(SmsService) context.getBean("smsService");
        SmsDto smsDto=new SmsDto();
        smsDto.setMobile("18684758953");
        smsDto.setMsg("恭喜你、调用服务成功!");
        smsService.sendSms(smsDto);

    }
}

运行后掉会用服务端生产者成功

34a92eb37e65f9477054fb14746b3f63.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值