dubbo的Rest调用

概念

dubbo也支持rest的方式调用服务,比如说有个服务他没有集成dubbo,但是他也想调用你的provider,那怎么办他就可以用rest协议去调用

代码地址

https://gitee.com/zjj19941/ZJJ_Dubbo.git 下的 rest 项目

代码案例

provider配置文件

重点配置是:dubbo.protocols.p1 和 dubbo.protocols.p2

spring.application.name=dubbo-provider-demo
server.port=8081


dubbo.scan.base-packages=com.zjj.provider.service

dubbo.application.name=${spring.application.name}
dubbo.registry.address=zookeeper://zjj101:2181



# Dubbo 协议定义,这个是属于应用级别的 ,配置你这个应用 用什么协议
dubbo.protocols.p1.id=dubbo-one
dubbo.protocols.p1.name=dubbo
dubbo.protocols.p1.port=20881
dubbo.protocols.p1.host=0.0.0.0

# 添加rest协议
dubbo.protocols.p2.id=rest-two
dubbo.protocols.p2.name=rest
dubbo.protocols.p2.port=8082
dubbo.protocols.p2.host=0.0.0.0

provider实现类

package com.zjj.provider.service;

import com.zjj.DemoService;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.config.annotation.Service;
import org.apache.dubbo.rpc.RpcContext;
import org.apache.dubbo.rpc.protocol.rest.support.ContentType;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;

/**
 * 参数2 protocol代表用properties声明的 p1和p2这两个protocol ,
 * 当然你也可以用一个,
 */
@Service(version = "rest", protocol = {"p2","p1"})
@Path("demo")  //路径
public class RestDemoService implements DemoService {

    @GET  // get请求
    @Path("say") // 路径
    @Produces({ContentType.APPLICATION_JSON_UTF_8, ContentType.TEXT_XML_UTF_8})
    @Override
    public String sayHello(@QueryParam("name") String name) {
        System.out.println("执行了rest服务" + name);

        URL url = RpcContext.getContext().getUrl();
        return String.format("%s: %s, Hello, %s", url.getProtocol(), url.getPort(), name);  // 正常访问
    }

}

启动项目开始测试

发现用postman也能调用成功. 用dubbo 的consumer也能调用成功,这个我就不演示了,自己去给代码下载下来跑起来运行下就知道结论了.

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值