本文介绍通过CSB SDK使用命令行或代码调用订阅的服务。

背景信息

CSB目前支持SDK调用服务和JWT Token调用服务,如果您想要了解JWT Token调用服务,请参见如何使用JWT Token调用服务

准备工作

在调用服务前,请确保您已经完成以下工作:

  • 发布服务
  • 订阅服务
  • 下载CSB官方版本的Java SDK

    SDK使用说明请参见Github的Readme

  • 获取CSB上发布的服务的访问地址。

    • 共享实例的服务地址请参见共享实例名称和服务访问地址
    • 专享实例的服务地址格式为http://CSB服务地址:8086/CSB
      说明 CSB服务地址即创建该实例时绑定的SLB的地址。

      CSB服务地址的获取方式如下:

      1. 使用创建该实例的账号登录EDAS控制台
      2. 在左侧导航栏选择组件中心 > 云服务总线
      3. 云服务总线左侧导航栏单击实例管理
      4. 实例列表页面选择目标地域,然后查看并获取目标实例的SLB地址实例列表

使用命令行调用服务

命令行方式通常用于快速测试、验证CSB服务的连通有效性。

简易版本CSB SDK命令行调用格式如下:

java -jar http-client-1.1.5.8.jar post "http://CSB服务地址:8086/CSB?HTTP参数kv值" "CSB服务名" "CSB服务版本号"    "访问凭证ak" "访问凭证sk"
说明 CSB服务地址即创建该实例时绑定的SLB的地址。

调用三个不同类型后端服务的命令行结果如下所示。

  • REST > RESTful

    命令行调用结果-REST-REST
  • REST > Dubbo

    命令行调用结果-Dubbo
  • REST > HSF

    命令行调用结果-HSF

使用代码调用服务

因为服务开放的类型都是REST,所以调用三个不同类型后端服务的示例代码几乎相同,只是参数有所变化。

  • REST > RESTful

    public void testHttp2Http() {
        HttpParameters.Builder builder = new HttpParameters.Builder();
        builder.requestURL("http://CSB服务地址:8086/CSB") // 设置请求的URL。其中,CSB服务地址即创建该实例时绑定的SLB的地址。
                .api("http2http1") // 设置服务名。
                .version("1.0.0") // 设置版本号。
                .method("post") // 设置调用方式, get或post。
                .accessKey("ak值").secretKey("sk值"); // 设置AccessKey ID和AccessKey Secret。
    
        // 设置HTTP FORM表单请求参数。
        builder.putParamsMap("times", "12").putParamsMap("name", "name1");
        try {
            String ret = HttpCaller.invoke(builder.build());
            System.out.println("------- ret=" + ret);
        } catch (HttpCallerException e) {
            e.printStackTrace();
        }
    }                    
  • REST > Dubbo

    public void testHttp2Dubbo() {
        HttpParameters.Builder builder = new HttpParameters.Builder();
        builder.requestURL("http://CSB服务地址:8086/CSB") // 设置请求的URL。其中,CSB服务地址即创建该实例时绑定的SLB的地址。
                .api("http2dubbo1") // 设置服务名。
                .version("1.0.0") // 设置版本号。
                .method("post") // 设置调用方式, get或post。
                .accessKey("ak值").secretKey("sk值"); // 设置AccessKey ID和AccessKey Secret。
    
        builder.putParamsMap("str", "strValue1");
        try {
            String ret = HttpCaller.invoke(builder.build());
            System.out.println("------- ret=" + ret);
        } catch (HttpCallerException e) {
            e.printStackTrace();
        }
    }                    
  • REST > HSF

    public void testHttp2Hsf() {
        HttpParameters.Builder builder = new HttpParameters.Builder();
        builder.requestURL("http://CSB服务地址:8086/CSB") // 设置请求的URL。其中,CSB服务地址即创建该实例时绑定的SLB的地址。
                .api("http2hsf1") // 设置服务名。
                .version("1.0.0") // 设置版本号。
                .method("post") // 设置调用方式, get或post。
                .accessKey("ak值").secretKey("sk值"); // 设置AccessKey ID和AccessKey Secret。
    
        builder.putParamsMap("str", "strValue1");
        try {
            String ret = HttpCaller.invoke(builder.build());
            System.out.println("------- ret=" + ret);
        } catch (HttpCallerException e) {
            e.printStackTrace();
        }
    }