技术与dubbo之dubbo多协议(解决了旧系统架构和旧微服务架构向新微服务架构过度)...

前言

进行服务改造,使用dubbo作为soa解决方案。现有的服务使用dubbo,而以前的服务有直接用http或者spring cloud调用的,要保证改造完成的服务与未改造的服务都可以正常的调用。同样不想留下太多的技术债务,去掉无效依赖。

解决方案

提供dubbo自定义传输协议dubbo,同时提供dubbo的restapi协议。

步骤

pom

服务提供者

		<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo-rpc-rest</artifactId>
            <version>2.6.5</version>
        </dependency>
		<dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>

api子模块

作用域设为provided,因为dubbo-rpc-rest依赖里面已经内置了javax.ws.rs-api 作用域设为provided,因为dubbo-rpc-rest依赖里面已经内置了javax.ws.rs-api 作用域设为provided,因为dubbo-rpc-rest依赖里面已经内置了javax.ws.rs-api

        <dependency>
		    <groupId>javax.ws.rs</groupId>
		    <artifactId>javax.ws.rs-api</artifactId>
		    <version>2.1.1</version>
		    <scope>provided</scope>
		</dependency>
		

springboot启动配置

spring:
  application:
    name: xxxxxxxx
  dubbo:
    server: true
    registry: zookeeper://127.0.0.1:2181
    consumer:
      timeout: 60000
    protocols:
        - name: dubbo
        - name: rest
          port: 8888
          server: tomcat
          contextpath: server

server类操作

一定要注意@Consumes与@Produces

  1. consumes是数据接收方式
  2. produces是数据返回方式
@Path("user")
@Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})
public interface UserService {
    @GET
    @Path("get")
	void get();
}

注意:Service一定要加上protocol= {"dubbo","rest"},当提供多协议的时候,dubbo不会默认提供

所有的提供。

@Service(interfaceClass = UserService.class , protocol= {"dubbo","rest"})
@Transactional(rollbackFor = Exception.class)
public class UserServiceImpl implements UserService {
	public  void get(){
	}
}

运行,直接在浏览器里面http://127.0.0.1:8888/server/users/get 可以看到方法被调用。

结语

这个技术方案解决了旧系统架构和旧微服务架构向新微服务架构过度的兼容。很大程度上保证了系统的稳定性,

转载于:https://my.oschina.net/u/1261452/blog/3042015

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值