dubbo现在用的也不多,基本都在用spring cloud那一套,所以不详细写这个dubbo了。

1.zookeeper的安装

2.demo示例

我们需要把提供者注册到dubbo注册中心,消费者去订阅

2.1:新建一个空的项目,先不建module

2.2:新建提供者(provider)模块

file->new->module,选择spring initializr

勾选上web

新建service及其实现类

public interface ProviderService {
String provideSomething();
}
 

package com.sunsas.provider.service.impl;

import com.sunsas.provider.service.ProviderService;
import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component; @Component
//将服务发布出去,注意此Service是dubbo包的
@Service
public class ProviderServiceImpl implements ProviderService {
@Override
public String provideSomething() {
return "something";
}
}

引入dubbo依赖

<!-- 引入spring-boot-starter以及dubbo和curator的依赖 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>

修改application.properties

server.port=8082
# 服务名称,保持唯一
dubbo.application.name=provider
# zookeeper地址,用于从中获取注册的服务
dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.scan.base-packages=com.sunsas.provider.service

appliacation 类加上@EnableDubbo注解

@EnableDubbo
@SpringBootApplication
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}

启动provider项目,注意需要先启动zookeeper。

2.3:新建消费者(consumer)模块

file->new->module,选择spring initializr,同样选中web模块,引入dubbo依赖

<!-- 引入spring-boot-starter以及dubbo和curator的依赖 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>

修改application.properties

server.port=8081
# 服务名称,保持唯一
dubbo.application.name=consumer
# zookeeper地址,用于从中获取注册的服务
dubbo.registry.address=zookeeper://127.0.0.1:2181

新建service类,这里直接用类,没有实现接口。

import com.alibaba.dubbo.config.annotation.Reference;
import com.sunsas.provider.service.ProviderService;
import org.springframework.stereotype.Service; @Service
public class ConsumerService {
@Reference
private ProviderService providerService; public String consumer(){
return providerService.provideSomething();
}
}

还要复制provider中的ProviderService

package com.sunsas.provider.service;

public interface ProviderService {
String provideSomething();
}

新建controller测试接口

import com.sunsas.comsumer.service.ConsumerService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @RestController
public class TestController {
@Resource
private ConsumerService consumerService; @RequestMapping("/test")
public String test(){
return consumerService.consumer();
}
}

结构如图:

发送请求测试

http://localhost:8081/test

需要注意的是复制ProviderService路劲要一致,否则可能空指针。

dubbo的使用的更多相关文章

  1. 用dubbo时遇到的一个序列化的坑

    首先,这是标题党,问题并不是出现在序列化上,这是报错的一部分: Caused by: com.alibaba.dubbo.remoting.RemotingException: Failed to s ...

  2. dubbo服务提供与消费

    一.前言 项目中用到了Dubbo,临时抱大腿,学习了dubbo的简单实用方法.现在就来总结一下dubbo如何提供服务,如何消费服务,并做了一个简单的demo作为参考. 二.Dubbo是什么 Dubbo ...

  3. 分布式学习系列【dubbo入门实践】

    分布式学习系列[dubbo入门实践] dubbo架构 组成部分:provider,consumer,registry,monitor: provider,consumer注册,订阅类似于消息队列的注册 ...

  4. Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题

    现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...

  5. Dubbo 备注

    Dubbo是阿里开源的一款服务治理中间件,主要包含如下节点: Provider: 暴露服务的服务提供方. Consumer: 调用远程服务的服务消费方. Registry: 服务注册与发现的注册中心. ...

  6. Dubbo学习小记

    前言 周一入职的新公司,到了公司第一件事自然是要熟悉新公司使用的各种技术,搭建本地的环境. 熟悉新公司技术的过程中,首先就是Maven,这个前面已经写过文章了,然后就是Dubbo----公司的服务都是 ...

  7. Running Dubbo On Spring Boot

    Dubbo(http://dubbo.io/) 是阿里的开源的一款分布式服务框架.而Spring Boot则是Spring社区这两年致力于打造的简化Java配置的微服务框架. 利用他们各自优势,配置到 ...

  8. 【转】Dubbo使用例子并且和Spring集成使用

    一.编写客户端和服务器端共用接口类1.登录接口类public interface LoginService {    public User login(String name, String psw ...

  9. 基于SOA分布式架构的dubbo框架基础学习篇

    以需求用例为基,抽象接口,Case&Coding两条线并行,服务(M)&消费(VC)分离,单元.接口.功能.集成四层质量管理,自动化集成.测试.交付全程支持. 3个大阶段(需求分析阶段 ...

  10. dubbo连接zookeeper注册中心因为断网导致线程无限等待问题【转】

    最近维护的系统切换了网络环境,由联通换成了电信网络,因为某些过滤规则导致系统连不上zookeeper服务器(应用系统机器在深圳,网络为电信线路,zookeeper服务器在北京,网络为联通线路),因为我 ...

随机推荐

  1. socket实现文件上传(客户端向服务器端上传照片示例)

    本示例在对socket有了基本了解之后,可以实现基本的文件上传.首先先介绍一下目录结构,server_data文件夹是用来存放客户端上传的文件,client_data是模拟客户端文件夹(目的是为了测试 ...

  2. 使用canvas制作五子棋游戏

    要制作JS五子棋的话我们可以一开始来理清一下思路,这样对我们后来的编程是有好处的 1.棋盘使用canvas制作.canvas用来做这种不用太过复杂的图形的时候是很有用处的,下图是我制作的一个五子棋棋盘 ...

  3. gulp 压缩文件2 摘

    一下代码用来简单的压缩 .js  和 .css   ;  在cmd里执行 gulp minifycss    minifyjs,各task执行是正常的. 注意,先安装后相应的模块,建议安装到本地. 说 ...

  4. [C/C++]const限定符总结

    const限定符 const是一种限定符,被const所限定的变量其值不可以被改变. const的初始化 由于const一旦创建其值就不能够被改变,所以我们必须对其进行初始化 const int a; ...

  5. 协程的原理(Coroutine Theory)

    原文链接:https://lewissbaker.github.io/2017/09/25/coroutine-theory This is the first of a series of post ...

  6. sys.stdout.write和print和sys.stdout.flush

    1. 先看下官方文档 """ sys.stdout.write(string) Write string to stream. Returns the number of ...

  7. JavaScript中,数组和对象的遍历方法总结

    循环遍历是写程序很频繁的操作,JavaScript 提供了很多方法来实现. 这篇文章将分别总结数组和对象的遍历方法,新手可以通过本文串联起学过的知识. 数组遍历 方法一:for 循环 for 循环是使 ...

  8. Danganronpa 水题。

    Danganronpa Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  9. Hello Rust!

    准备工作 Rust是系统编程语言,会经过传统的编译.链接.生成可执行文件等过程.它依赖c/cpp的编译环境,需要提前安装c/cpp开发环境,比如安装gcc及其依赖等. 安装(macOS / Linux ...

  10. form中label标签对齐,内容右对齐

    给label设置一个固定长度即可: label{      display:inline-block;      width:100px; text-align:right;    }