搭建dubbo基礎環(huán)境
- 創(chuàng)建項目
- 創(chuàng)建提供者和消費者兩個module
目錄結構如下圖所示
父module:
cateye_center_base
子module:cateye_center_ordercateye_center_user
提供者:cateye_center_user
消費者:cateye_center_order

image.png
提供者服務
- 父
pom.xml添加依賴
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
- 配置文件
application.properties
spring.application.name=dubbo-spring-boot-starter
spring.dubbo.server=true
spring.dubbo.registry=N/A
- Spring Boot Application的上添加@EnableDubboConfiguration
package com.evan;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubboConfiguration
public class CateyeCenterUserApplication {
public static void main(String[] args) {
SpringApplication.run(CateyeCenterUserApplication.class, args);
}
}
- 編寫dubbo服務
ApiService
package com.evan.dubbo.api;
public interface ApiService {
String sendMessage(String message);
}
ProviderServiceImpl
package com.evan.dubbo.api.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.evan.dubbo.api.ApiService;
import org.springframework.stereotype.Component;
@Component
@Service(interfaceClass = ApiService.class)
public class ProviderServiceImpl implements ApiService {
@Override
public String sendMessage(String message) {
return "provider:"+message;
}
}
-
啟動提供者服務
image.png
消費者服務
- 配置文件
application.properties
spring.application.name=dubbo-spring-boot-starter
- Spring Boot Application的上添加@EnableDubboConfiguration
package com.evan;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import com.evan.dubbo.api.impl.ConsumerServiceImpl;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
@EnableDubboConfiguration
public class CateyeCenterOrderApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(CateyeCenterOrderApplication.class, args);
ConsumerServiceImpl consumerServiceImpl = (ConsumerServiceImpl) context.getBean("consumerServiceImpl");
consumerServiceImpl.sendMessage("hello");
}
}
- 編寫dubbo服務,通過@Reference注入需要使用的interface
ApiService
package com.evan.dubbo.api;
public interface ApiService {
String sendMessage(String message);
}
ConsumerServiceImpl
package com.evan.dubbo.api.impl;
import com.alibaba.dubbo.config.annotation.Reference;
import com.evan.dubbo.api.ApiService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component
public class ConsumerServiceImpl {
private static final Logger logger = LoggerFactory.getLogger(ConsumerServiceImpl.class);
@Reference(url = "dubbo://localhost:20880")
ApiService apiService;
public void sendMessage(String message){
logger.info(apiService.sendMessage(message));
}
}
-
啟動消費者服務
image.png
集成注冊中心
前提是已經(jīng)安裝zookeeper并且啟動
- 添加zookeeper依賴
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.9</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.9</version>
<type>pom</type>
</dependency>
修改提供者配置文件
spring.dubbo.registry=N/A修改為spring.dubbo.registry=zookeeper://localhost:2181修改消費者配置文件
添加spring.dubbo.registry=zookeeper://localhost:2181修改
@Reference
@Reference(interfaceClass = ApiService.class)

