准备:
转载链接:https://www.cnblogs.com/geekdc/p/9267341.html
dubbo-spring-boot-starter的使用:
github地址:https://github.com/alibaba/dubbo-spring-boot-starter 最新版本为2.0 ,本文也是使用的该版本。
Dubbo配置清单:https://www.jianshu.com/p/60c79f48d4d6
开发:
提供者:
1、添加依赖:
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
** 2 启动类配置: **
package com.dc.sb.dubbo.provider;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubboConfiguration
public class SbDubboProviderApplication {
public static void main(String[] args) {
SpringApplication.run(SbDubboProviderApplication.class, args);
}
}
3 、配置文件:
server.port=8081
server.context-path=/
spring.application.name=dubbo-spring-boot-starter
spring.dubbo.server=true
spring.dubbo.registry=zookeeper://127.0.0.1:2181
配置类:
package com.ec.zztproject.config;
import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class DubboConfig {
private Logger logger = LoggerFactory.getLogger(DubboConfig.class);
@Value("${dubbo.application.name}")
String name;
@Value("${zookeeper.address}")
String address;
@Value("${dubbo.protocol.name}")
String protocolName;
@Value("${dubbo.protocol.port}")
Integer protocolPort;
@Value("${dubbo.protocol.timeout}")
Integer protocolTimeout;
@Bean
public ApplicationConfig applicationConfig(){
ApplicationConfig applicationConfig = new ApplicationConfig();
applicationConfig.setName(name);
applicationConfig.setQosEnable(false);
logger.info("applicationConfig:{}",applicationConfig.toString());
return applicationConfig;
}
@Bean
RegistryConfig registryConfig(){
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setClient("curator");
registryConfig.setProtocol("zookeeper");
registryConfig.setAddress(address);
logger.info("registryConfig:{}",registryConfig.toString());
return registryConfig;
}
@Bean
ProtocolConfig protocolConfig(){
ProtocolConfig protocolConfig = new ProtocolConfig();
protocolConfig.setName(protocolName);
protocolConfig.setPort(protocolPort);
protocolConfig.setAccepts(protocolTimeout);
logger.info("protocolConfig:{}",protocolConfig.toString());
return protocolConfig;
}
}
** 4、接口实现类:**
package com.dc.sb.dubbo.provider.service.user;
import com.alibaba.dubbo.config.annotation.Service;
import com.dc.sb.service.RemoteUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
/**
* dubbo 服务service
*
* @author DUCHONG
* @since 2018-07-03 18:29
**/
@Component
@Service(version = "1.0.0",timeout = 10000,interfaceClass = RemoteUserService.class)
public class RemoteUserServiceImpl implements RemoteUserService {
private static final Logger logger = LoggerFactory.getLogger(RemoteUserServiceImpl.class);
@Override
public String sayHello(String name) {
return "Hello "+name;
}
}
消费者:
1、添加依赖:
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
** 2、启动类配置:**
package com.dc.sb.web;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import com.dc.sb.config.DruidProperties;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@EnableConfigurationProperties({DruidProperties.class})
@MapperScan(basePackages = "com.dc.sb.dao")
@ComponentScan("com.dc.sb.*")
@EnableDubboConfiguration
public class SbWebApplication {
public static void main(String[] args) {
SpringApplication.run(SbWebApplication.class, args);
}
}
3 、配置文件:
server.port=8081
server.context-path=/
spring.application.name=dubbo-spring-boot-starter
spring.dubbo.server=true
spring.dubbo.registry=zookeeper://127.0.0.1:2181
配置类:
package com.ec.zztproject.config;
import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class DubboConfig {
private Logger logger = LoggerFactory.getLogger(DubboConfig.class);
@Value("${dubbo.application.name}")
String name;
@Value("${zookeeper.address}")
String address;
@Value("${dubbo.protocol.name}")
String protocolName;
@Value("${dubbo.protocol.port}")
Integer protocolPort;
@Value("${dubbo.protocol.timeout}")
Integer protocolTimeout;
@Bean
public ApplicationConfig applicationConfig(){
ApplicationConfig applicationConfig = new ApplicationConfig();
applicationConfig.setName(name);
applicationConfig.setQosEnable(false);
logger.info("applicationConfig:{}",applicationConfig.toString());
return applicationConfig;
}
@Bean
RegistryConfig registryConfig(){
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setClient("curator");
registryConfig.setProtocol("zookeeper");
registryConfig.setAddress(address);
logger.info("registryConfig:{}",registryConfig.toString());
return registryConfig;
}
@Bean
ProtocolConfig protocolConfig(){
ProtocolConfig protocolConfig = new ProtocolConfig();
protocolConfig.setName(protocolName);
protocolConfig.setPort(protocolPort);
protocolConfig.setAccepts(protocolTimeout);
logger.info("protocolConfig:{}",protocolConfig.toString());
return protocolConfig;
}
}
4、消费者模块:
package com.dc.sb.web.controller.remote;
import com.alibaba.dubbo.config.annotation.Reference;
import com.dc.sb.service.RemoteUserService;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RemoteUserController {
@Reference
private RemoteUserService remoteUserService;
@RequestMapping(value="/dubbo/say/{name}")
public String sayHello(@PathVariable("name") String name){
String result=remoteUserService.sayHello(name);
return result;
}
}