Spring-Boot集成Dubbo简单入门总结

栏目: Java · 发布时间: 5年前

内容简介:我这里使用zookeeper作为服务注册中心,版本3.4.9,下载地址:下载后,解压要先配置一下,否则没法启动,启动会报错,找不到

安装zookeeper

我这里使用zookeeper作为服务注册中心,版本3.4.9,下载地址: https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/

下载后,解压

要先配置一下,否则没法启动,启动会报错,找不到 zoo.cfg 文件,其实这个配置文件是有的,在 conf 文件夹里,只不过名字是 zoo_sample.cfg 把名字改一下即可

windows是启动还有些问题,直接运行 zkServer.cmd 还不行,我电脑上还装了 git-bash ,所以直接打开 git-bash 进入 bin 目录,运行命令 ./zkServer.sh start 即可启动

停止命令是 ./zkServer.sh stop

定义服务接口

既然是服务,肯定会有接口与一些共用的实体类,如果写在provider里,那么consumer消费的时候,也要再写一遍,所以先把这块提取出来,开发好后,打成jar包,让provider与consumer都引用即可实现共用

新建一个maven项目就可以了

定义一个接口,我这里模拟一下短信服务

public interface SmsService {

    /**
     * 定义一个发短信的接口
     * @param mobile 手机号
     * @param content 内容
     * @param platform 平台,分别对应 LIANTONG, YIDONG, DIANXIN
     * @return 正常返回发送成功,失败即可,这里为了展示发送的手机号与内容平台,直接把内容再返回去
     */
    String sendSms(String mobile, String content, String platform);

}

写好之后,运行 mvn compile install 安装到本地

服务提供者 Provider

新建Springboot项目,引入依赖,我这Springboot使用的版本是2.x,所以这里的 starter 用的是 0.2.x 如果springboot版本是1.5.x 那么这个starter版本要使用0.1.x

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>

另外还要引入上面开发好的接口jar包

<dependency>
    <groupId>com.example</groupId>
    <artifactId>interface</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

添加配置

找到 application.properties 将其修改成 application.yml 我比较喜欢yml配置文件,简洁,而且可以少写很多 : )

添加下面配置

dubbo:
  application:
    name: demo-provider # 服务名
  registry:
    address: zookeeper://127.0.0.1:2181 # 注册中心地址
  protocol:
    name: dubbo # 指定通信协议
    port: 20880 # 通信端口  这里指的是与消费者间的通信协议与端口
  provider:
    timeout: 10000 # 配置全局调用服务超时时间,dubbo默认是1s,肯定不够用呀
    retries: 3 # 重试3次
    delay: -1

这里我碰到一个坑,就是这个超时时间问题,默认是1s,但我实现服务为了模拟效果,故意延时2s,这导致后面消费者端调用服务的时候一直报错

在服务提供者里实现服务

@Service
@Component
public class SmsServiceImpl implements SmsService {

    @Override
    public String sendSms(String mobile, String content, String platform) {
        try {
            Thread.sleep(2000);// 模拟调用短信接口费时2s
            return String.format("发送结果: %s, 手机号: %s, 内容: %s, 平台: %s", "SUCCESS", mobile, content, platform);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return null;
    }
}

这个实现上有个注解 @Service 这个不是Spring包里的那个注解,而是dubbo里提供的注解,包名是 com.alibaba.dubbo.config.annotation.Service 这个注解的用处是暴露服务给消费端使用的,所以一定要加上

暴露了服务还不够,还要开启dubbo服务,在启动类上加上注解 @EnableDubbo

到这服务提供端就开发好了,启动服务即可

服务消费端 Consumer

有了服务提供者了,还要有消费者,下面来开发消费者

首先创建一个springboot项目,这里就调用一下服务,不需要引入其它依赖,就默认什么都不选的一个springboot项目即可

然后跟提供者一样,引入依赖,跟服务端一样的依赖

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>

<dependency>
    <groupId>com.example</groupId>
    <artifactId>interface</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

添加配置

dubbo:
  application:
    name: demo-consumer # 消息者名字
  registry:
    address: zookeeper://127.0.0.1:2181 # 注册中心地址

调用服务,我这就直接写在test方法里了

@RunWith(SpringRunner.class)
@SpringBootTest
public class ConsumerApplicationTests {

    @Reference
    private SmsService smsService;

    @Test
    public void contextLoads() {
        String s = smsService.sendSms("13111111111", "hello world", "LIANTONG");
        System.out.println(s);
    }

}

运行test方法,结束可以看到打印出调用的结果

发送结果: SUCCESS, 手机号: 13111111111, 内容: hello world, 平台: LIANTONG

至此,springboot集成dubbo简单demo就开发完了

参考

原文链接:


以上所述就是小编给大家介绍的《Spring-Boot集成Dubbo简单入门总结》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ajax Design Patterns

Ajax Design Patterns

Michael Mahemoff / O'Reilly Media / 2006-06-29 / USD 44.99

Ajax, or Asynchronous JavaScript and XML, exploded onto the scene in the spring of 2005 and remains the hottest story among web developers. With its rich combination of technologies, Ajax provides a s......一起来看看 《Ajax Design Patterns》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换