dubbo需要一个注册中心,用的是zookeeper。集成spring-boot是为了方便使用注解开发。
1. 安装zoopkker
hadoop01:2181, hadoop02:2181, hadodp03:2181
2. 编写dubbo公共接口
HelloService
package com.dubbo.service; import com.dubbo.model.User; public interface HelloService { String sayHello(String name); }
3. 编写provider 并注册到zookeeper
这里需要注意的是:接口实现类上面标的注解@Service是 com.alibaba.dubbo.config.annotation.Service;
还要在启动类上面加上一个注解:@DubboComponentScan
3.1 HelloService实现类
package com.dubbo.provider.service; import java.util.UUID; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.alibaba.dubbo.config.annotation.Service; import com.dubbo.service.HelloService; @Service public class HelloServiceImpl implements HelloService { private static Logger LOGGER = LoggerFactory.getLogger(HelloServiceImpl.class); @Override public String sayHello(String name) { LOGGER.info("request from consumer...param...{}", name); return "hello " + name; } }
3.2 dubbo配置类
package com.dubbo.provider.conf; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.alibaba.dubbo.config.ApplicationConfig; import com.alibaba.dubbo.config.ProtocolConfig; import com.alibaba.dubbo.config.RegistryConfig; @Configuration public class ProviderConf { // <dubbo:registry // address="zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181,10.20.153.12:2181" // /> // <dubbo:registry protocol="zookeeper" // address="10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181" /> @Bean public ApplicationConfig applicationConfig() { ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName("provider-test"); return applicationConfig; } @Bean public RegistryConfig registryConfig() { RegistryConfig registryConfig = new RegistryConfig(); registryConfig.setAddress("zookeeper://hadoop01:2181?backup=hadoop02:2181,hadoop03:2181"); registryConfig.setClient("zkclient"); return registryConfig; } @Bean public ProtocolConfig protocolConfig() { ProtocolConfig protocolConfig = new ProtocolConfig(); protocolConfig.setName("dubbo"); protocolConfig.setPort(20880); return protocolConfig; } }
3.3 provider启动类
package com.dubbo.provider; import java.io.IOException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScan; @SpringBootApplication @DubboComponentScan(basePackages = { "com.dubbo.provider.service" }) public class Provider { private static Logger LOGGER = LoggerFactory.getLogger(Provider.class); public static void main(String[] args) throws IOException { LOGGER.debug("startup provider..."); SpringApplication.run(Provider.class, args); System.in.read(); } }
4. 编写consumer调用服务
这里需要注意:注入远程HelloService对象的时候,要用@Reference,不是用@Autowired,因为dubbo目前是使用@Reference来做的,底层用了ReferenceAnnotationBeanPostProcessor来注入@Reference标注的属性。
4.1 controller调用远程HelloService服务
package com.dubbo.consumer.controller; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.alibaba.dubbo.config.annotation.Reference; import com.dubbo.service.HelloService; @RestController @RequestMapping(path = "/hello", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public class HelloController { @Reference private HelloService helloService; @RequestMapping(path = "/say", method = RequestMethod.GET) public String sayHello(String name) { return helloService.sayHello(name); } }
4.2 consumer配置类
package com.dubbo.consumer.conf; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.alibaba.dubbo.config.ApplicationConfig; import com.alibaba.dubbo.config.ConsumerConfig; import com.alibaba.dubbo.config.RegistryConfig; @Configuration public class ConsumerConf { @Bean public ApplicationConfig applicationConfig() { ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName("consumer-test"); return applicationConfig; } @Bean public ConsumerConfig consumerConfig() { ConsumerConfig consumerConfig = new ConsumerConfig(); consumerConfig.setTimeout(3000); return consumerConfig; } @Bean public RegistryConfig registryConfig() { RegistryConfig registryConfig = new RegistryConfig(); registryConfig.setAddress("zookeeper://hadoop01:2181?backup=hadoop02:2181,hadoop03:2181"); registryConfig.setClient("zkclient"); return registryConfig; } }
4.3 consumer启动类
package com.dubbo.consumer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScan; @SpringBootApplication @DubboComponentScan(basePackages = { "com.dubbo.consumer.controller" }) public class Consumer { public static void main(String[] args) { SpringApplication.run(Consumer.class, args); } }
相关推荐
标题 "springboot2.0.x+dubbo-spring-boot-starter" 涉及的是将流行的微服务框架 Dubbo 集成到 Spring Boot 2.0.x 的项目实践中。这个集成使得开发者能够利用 Spring Boot 的便利性和 Dubbo 的高性能远程服务调用...
为了方便监控服务的状态,可以在Spring Boot项目中集成Dubbo监控中心和日志系统。Dubbo监控中心可以帮助我们实时监控服务调用的情况,而日志系统则可以帮助记录服务调用的日志。 #### 五、高级特性 在使用Dubbo和...
spring-boot-starter-dubbo 很简单,也很方便使用,它同时集成了dubbo 的 provider 和 consumer 的功能。 当在 provider 端使用 spring-boot-starter-dubbo 时,可以选择不用 web 容器或者使用 web 容器;当...
当这两者结合,便诞生了Dubbo-Spring-Boot-Starter,它使得在Spring Boot环境中集成和使用Dubbo变得轻而易举。本文将深入探讨"**dubbo-spring-boot-starter-2.7.8.zip**"中的核心概念与功能。 首先,**dubbo-spring...
当这两者结合,便诞生了`dubbo-spring-boot-autoconfigure`,这是一个用于将Dubbo无缝集成到Spring Boot应用中的关键组件。本篇将深入探讨`dubbo-spring-boot-autoconfigure-2.7.8`版本的相关知识点。 1. **Dubbo ...
本教程将深入探讨如何在Spring Boot项目中集成Spring Dubbo,实现高效的服务调用和管理。 一、Spring框架与Spring Boot Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)能力,为Java开发者提供了灵活且...
Spring Boot 整合 Dubbo:Spring-boot-dubbo-starter 是一种将 Dubbo 服务框架与 Spring Boot 框架集成的解决方案。 Dubbo 是一个分布式服务框架,提供了服务注册、服务发现、服务调用等功能,而 Spring Boot 是一个...
【标题】"dubbo-demo:基于dubbo-spring-boot-starter的一个demo" 是一个示例项目,它展示了如何在Spring Boot应用中集成和使用Dubbo服务框架。Dubbo是阿里巴巴开源的一款高性能、轻量级的Java远程服务调用框架,而...
Spring-Boot-Starter-Dubbo就是这两者的桥梁,它将Dubbo的配置和使用集成到Spring Boot的生态系统中,使得开发者无需手动配置大量的XML或者Java配置,只需要通过简单的注解和属性配置,就能轻松地实现服务的消费和...
自定义的spring-boot的dubbo starter,为spring-boot相关的项目使用dubbo提供简易的方式并集成spring-boot的auto configuration 版本 本项目版本 dubbo版本 1.0.0 dubbox自定义版本2.8.4-banyan 打包 修改相关的...
在实际的`spring-boot-dubbo`项目中,可能包含如下的文件: - `pom.xml`:项目的Maven配置文件,包含了Spring Boot和Dubbo的相关依赖。 - `src/main/resources/application.properties`或`application.yml`:项目的...
本系列是spring-boot相关的一些列子,比如spring-boot集成druid,以及druid的动态数据源切换, spring-boot 集成mybatis,spring-boot集成定时器等等 1,弹簧靴集成德鲁伊数据库连接池 详情查看项目 2,spring-boot...
在我们的示例中,"dubbo-spring-demo"就是基于Spring Boot的Dubbo集成应用,它实现了Spring Boot与Dubbo的无缝连接,为后续添加其他组件如MyBatis、Kafka或RabbitMQ、ES提供了基础。 1. **引入依赖** 要整合Spring...
【标题】"idea maven聚合项目 spring-boot 整合 dubbo" ...通过这个"idea maven聚合项目 spring-boot 整合 dubbo"的实践,你可以深入理解Spring Boot和Dubbo的集成方式,为构建更复杂的微服务架构打下坚实基础。
Dubbo|[Spring Cloud Alibaba(四)Spring Cloud与Dubbo的融合](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba/README4.md) RocketMQ|[Spring Cloud Alibaba(五)RocketMQ 异步通信实现]...
(1)commons-logging-...(7)dubbo-2.5.3.jar (8)javassist-3.18.0-GA.jar (9)log4j-1.2.17.jar (10)netty-3.2.5.Final.jar (11)slf4j-api-1.7.12.jar (12)zkclient-0.1.jar (13)zookeeper-3.4.13.jar
5. **启动和测试**:项目可能会提供一个主启动类,如`com.example.DemoApplication`,用于启动Spring Boot应用,并加载Dubbo配置。此外,还可能包含测试用例来验证服务的正常工作。 6. **服务调用**:在示例中,...
- **Spring Boot整合**:通过Spring Boot Starter,可以方便地将Dubbo集成到Spring Boot应用中,简化配置。 - **服务提供者与消费者**:理解服务提供者如何发布服务,以及服务消费者如何消费这些服务。 3. **...
首先,"spring-dubbo-parent-master.zip"是一个包含整个项目结构的压缩包,意味着它可能包含了Spring Boot和Dubbo集成的示例代码,包括父级pom.xml文件,模块化的服务消费者和服务提供者的配置,以及可能的filter...
首先,在`pom.xml`文件中添加Dubbo和SpringBoot的依赖,如`dubbo-spring-boot-starter`,以及对应的版本号。然后,在`application.properties`或`application.yml`中设置Dubbo的参数,比如服务提供者的地址、端口、...