栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

dubbo的Rest调用

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;


@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也能调用成功,这个我就不演示了,自己去给代码下载下来跑起来运行下就知道结论了.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/663569.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号