工作中用springboot搭建項目,用dubbo做遠(yuǎn)程調(diào)用。springboot提倡注解配置和java配置,本文是基于dubbo最新版本2.6.3,使用注解方式的示例。
本文假定你已經(jīng)有springboot和dubbo的使用經(jīng)驗。
dubbo簡介
dubbo是阿里巴巴開源的分布式服務(wù)框架,一般使用dubbo的RPC調(diào)用。但2016年停止維護(hù),現(xiàn)在使用的2.8.4版本其實是當(dāng)當(dāng)維護(hù)的dubbox。2017年8月阿里又重啟維護(hù)dubbo,并從2.5.7版本開始支持注解配置。
準(zhǔn)備
此示例使用gradle構(gòu)建,關(guān)于gradle的安裝配置,請參考官方文檔。
zookeeper作為dubbo服務(wù)發(fā)現(xiàn)的基礎(chǔ)組件,關(guān)于zookeeper的安裝啟動,請參考官方文檔。
項目結(jié)構(gòu)如下
springboot-dubbo├─settings.gradle├─build.gradle├─springboot-dubbo-api│ │─build.gradle│ └─src│ └─main│ └─java│ └─org│ └─aaron│ └─springboot│ └─dubbo│ └─api│ DemoService.java├─springboot-dubbo-consumer│ │─build.gradle│ └─src│ └─main│ ├─java│ │ └─org│ │ └─aaron│ │ └─springboot│ │ └─dubbo│ │ └─consumer│ │ DemoController.java│ │ DubboConfiguration.java│ │ DubboConsumerApplication.java│ │ │ └─resources│ application.yml└─springboot-dubbo-provider │─build.gradle └─src └─main ├─java │ └─org │ └─aaron │ └─springboot │ └─dubbo │ └─provider │ DemoServiceImpl.java │ DubboConfiguration.java │ DubboProviderApplication.java │ └─resources application.yml
引入外部依賴
compile('com.alibaba:dubbo:2.6.3') compile('org.apache.zookeeper:zookeeper:3.4.9') compile('org.apache.curator:curator-framework:4.0.0') compile('org.springframework.boot:spring-boot-starter-web')
配置
1.生產(chǎn)者dubbo配置
@Configurationpublic class DubboConfiguration { @Bean public RegistryConfig registryConfig() { RegistryConfig registryConfig = new RegistryConfig(); registryConfig.setAddress("zookeeper://127.0.0.1:2181"); registryConfig.setClient("curator"); return registryConfig; } @Bean public ApplicationConfig applicationConfig() { ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName("sprintboot-dubbo-provider"); return applicationConfig; } @Bean public ProtocolConfig protocolConfig() { ProtocolConfig protocolConfig = new ProtocolConfig(); protocolConfig.setPort(12021); protocolConfig.setName("dubbo"); return protocolConfig; }}
2.消費(fèi)者dubbo配置
@Configurationpublic class DubboConfiguration { @Bean public RegistryConfig registryConfig() { RegistryConfig registryConfig = new RegistryConfig(); registryConfig.setAddress("zookeeper://127.0.0.1:2181"); registryConfig.setClient("curator"); return registryConfig; } @Bean public ApplicationConfig applicationConfig() { ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName("sprintboot-dubbo-consumber"); return applicationConfig; } @Bean public ConsumerConfig consumerConfig() { ConsumerConfig consumerConfig = new ConsumerConfig(); consumerConfig.setTimeout(3000); return consumerConfig; }}
3.定義接口
public interface DemoService { String sayHello();}
4.生產(chǎn)者實現(xiàn)接口
import com.alibaba.dubbo.config.annotation.Service;@Component@Service(interfaceClass = DemoService.class, version = "1.0")public class DemoServiceImpl implements DemoService { @Override public String sayHello() { return "Hello Springboot Dubbo"; }}
5.消費(fèi)者調(diào)用接口
import com.alibaba.dubbo.config.annotation.Reference;@RestControllerpublic class DemoController { @Reference(interfaceClass = DemoService.class, version = "1.0") private DemoService demoService; @RequestMapping("/hello") public String sayHello() { return demoService.sayHello(); }}
啟動
其他
示例源碼(Github)
Dubbo注解配置
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。
新聞熱點
疑難解答
圖片精選