网络科技公司网站源码下载,最好的小说网站排名,网站百科怎么做,自适应网页模板建站白话讲解Dubbo服务
dubbo服务是典型的RPC服务调用方式#xff0c;即所谓的远程调用。 dubbo服务涉及三要素#xff1a;
一、协议
即服务提供者和服务消费者都要遵守的协议规则#xff0c;里面规定了该服务都有哪些接口。一般都是直接定义接口名和接口内的方法名#xff…白话讲解Dubbo服务
dubbo服务是典型的RPC服务调用方式即所谓的远程调用。 dubbo服务涉及三要素
一、协议
即服务提供者和服务消费者都要遵守的协议规则里面规定了该服务都有哪些接口。一般都是直接定义接口名和接口内的方法名然后打成依赖包注册到版本库中。服务的提供者和服务的消费者都要引用该协议的依赖。
**具体写法**
直接新建一个maven项目项目中直接定义service不必具体实现。该maven项目中也可放入服务提供者和消费者都要用到的实体类。编写完毕后直接打包注册到setting.xml文件配置的版本库中一般公司都是自己搭建的私服。二、服务提供者
服务提供者需要实现该协议中规定的接口重写该协议中未实现的接口方法。
**具体写法**
1.引入dubbo和springboot整合的依赖!--dubbo和springboot整合的依赖--dependencygroupIdio.dubbo.springboot/groupIdartifactIdspring-boot-starter-dubbo/artifactIdversion1.0.0/version/dependency2.引入协议依赖实现协议中的接口。*一定要注意该实现类要加上com.alibaba.dubbo.config.annotation.Service;包的Service注解。*package com.sunlibin.weatherprovider.service;import com.alibaba.dubbo.config.annotation.Service;
import com.sunlibin.bean.District;
import com.sunlibin.service.RpcDistrictService;
import com.sunlibin.weatherprovider.mapper.DistrictMapper;
import org.springframework.transaction.annotation.Transactional;import javax.annotation.Resource;
import java.util.List;Transactional
Service(interfaceClass com.sunlibin.service.RpcDistrictService.class)
//service注解为alibaba的service注解指明实现的远程接口是哪个
public class DistrictService implements RpcDistrictService {Resourceprivate DistrictMapper districtMapper;Overridepublic ListDistrict getAllDistrict() {return this.districtMapper.getAllDistrict();}Overridepublic District getDistrictById(Integer id) {return this.districtMapper.getDistrictById(id);}
}
3.application.properties文件中配置dubbo的注册地址和注册名称
#配置dubbo
#dubbo提供者的别名只是个标识
spring.dubbo.application.namespring-boot-starter-dubbo-demo-provider
#zk地址dubbo的注册地址
spring.dubbo.registry.addresszookeeper://localhost:2181
#dubbo协议
spirng.dubbo.protocol.namedubbo
#duboo端口号
spring.dubbo.protocol.port20880
#这是你要发布到dubbo的接口所在包位置
spring.dubbo.scancom.sunlibin.weatherprovider配置完毕后随着此项目的启动此提供者也就开始提供协议中规定的服务了。
三、服务消费者
服务消费者需要直接引用该协议中的接口然后调用该协议中规定的接口方法。通过dubbo的映射机制就会调用到服务提供者所提供的接口方法具体实现。
**具体写法**
1.引入协议依赖和dubbo与springboot整合的依赖!--dubbo和springboot整合的依赖--dependencygroupIdio.dubbo.springboot/groupIdartifactIdspring-boot-starter-dubbo/artifactIdversion1.0.0/version/dependency2.在application.properties文件配置dubbo
#该服务名称在dubbo中的别称
spring.dubbo.application.namespring-boot-starter-dubbo-demo-consumer
#zk地址
spring.dubbo.registry.addresszookeeper://localhost:2181
#dubbo协议
spring.dubbo.protocal.namedubbo
#duboo端口号
spring.dubbo.protocol.port20880
#这是要扫描使用的dubbo接口所在包位置
spring.dubbo.scancom.sunlibin.weathercustomer3.直接在serviceImpl层通过com.alibaba.dubbo.config.annotation.Reference;包Reference注解直接使用协议中规定的服务。package com.sunlibin.weathercustomer.service.impl;import com.alibaba.dubbo.config.annotation.Reference;
import com.sunlibin.bean.District;
import com.sunlibin.service.RpcDistrictService;
import com.sunlibin.weathercustomer.service.DistrictService;
import org.springframework.stereotype.Service;import java.util.List;Service(districtService)
public class DistrictServiceImpl implements DistrictService {Referenceprivate RpcDistrictService rpcDistrictService;Overridepublic ListDistrict getAllDistrict() {return this.rpcDistrictService.getAllDistrict();}Overridepublic District getDistrictById(Integer id) {return this.rpcDistrictService.getDistrictById(id);}
}
如此待项目启动后会自动调用zk中注册的相关服务提供者。