环境搭建
安装ZK
以zk为注册中心,windows的安装看下面这个链接就可以
https://blog.csdn.net/qq_33316784/article/details/88563482
POM引入
pom引入就不一一介绍了 我会把源码放到git上,这里就看下下面这俩吧 代表着dubbo使用的是dubbo,序列化使用的是hessian
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-remoting-netty4</artifactId>
<version>${dubbo.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-remoting-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-serialization-hessian2</artifactId>
<version>${dubbo.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-common</artifactId>
</exclusion>
</exclusions>
</dependency>
代码
整体目录结构如下
API部分
public interface HelloService {
String sayHello(String name);
}
provider
配置文件
跟eureka差不多 都是定义注册时候的一些名称
dubbo.application.name=service-provider4
dubbo.protocol.name=rmi
dubbo.protocol.port=20889
dubbo.application.owner=zimu
启动类
需要注册到zk,并且扫描配置文件和实际提供的文件夹
@Configuration
@EnableDubbo(scanBasePackages = "com.demo.service.impl")
@PropertySource("classpath:/dubbo-provider.properties")
static class ProviderConfiguration{
@Bean
public RegistryConfig registryConfig(){
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setAddress("zookeeper://127.0.0.1:2181?timeout=10000");
//registryConfig.setTimeout(10000);
return registryConfig;
}
}
service
继承刚刚的API实现该接口
//这个service 是dubbo的 代表服务的提供者
@Service
public class HelloServiceImpl implements HelloService {
@Override
public String sayHello(String name) {
System.out.println(name);
return "hello:"+name;
}
消费者
配置文件
需要配置zk的地址和服务的名称
dubbo.application.name=service-consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.consumer.timeout=4000
dubbo.application.qosEnable=true
dubbo.application.qosPort=33333
dubbo.application.qosAcceptForeignIp=false
启动类
扫描配置文件 扫描实际消费的文件夹
@Configuration
@PropertySource("classpath:/dubbo-consumer.properties")
@ComponentScan(basePackages = "com.demo.bean")
@EnableDubbo
static class ConsumerConfiguration{
}
消费的service
@Component
public class ComsumerComponet {
@Reference
private HelloService helloService;
public String sayHello(String name){
return helloService.sayHello(name);
}
}
运行
服务提供者 收到消息
消费者接收到返回的消息
下面这个图是ZK的 表明注册提供者成功注册
代码地址
https://gitee.com/anlushan/dubbodemo.git
版权声明:本文为u010215318原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。