写点什么

【TcaplusDB 知识库】异步调用接口示例代码

作者:TcaplusDB
  • 2022 年 1 月 11 日
  • 本文字数:1715 字

    阅读完需:约 6 分钟

【TcaplusDB知识库】异步调用接口示例代码

【TcaplusDB 知识库】异步调用接口示例代码

说明

Java SDK 所有接口的调用,都支持异步调用模式。


除数据扫描相关接口,有单独的异步调用模式之外,其它接口的异步调用方式是相同的。


与同步调用的区别是,同步调用的使用的是 Client 的 poll 方法发起调用,而异步调用使用的是 Client 的 post 方法发起调用。

准备工作

参见章节: [准备工作](https://tcaplusdb.tencent.com/UserGuide/04TcaplusDB SDK/03TDR 表 SDK/02TDR 表 JavaSDK/02TDR 表 JavaSDK 示例代码/01 准备工作.html)。

示例代码

本文以异步读取数据为例,介绍非数据扫描接口的异步调用过程。


示例代码


import com.tencent.tcaplus.client.Client;import com.tencent.tcaplus.client.ClientFactory;import com.tencent.tcaplus.client.Record;import com.tencent.tcaplus.client.Request;import com.tencent.tcaplus.client.Response;import com.tencent.tdr.tcaplus_protocol_cs.TcaplusProtocolCsConstants;
import java.util.ArrayList;import java.util.List;import java.util.concurrent.CountDownLatch;
public class Example {
public static void main(String[] arguments) throws InterruptedException { // 1. 准备环境信息 // 1.1. 目录服务地址列表 List<String> dirList = new ArrayList<String>(); dirList.add("tcp://x.x.x.x:9999"); dirList.add("tcp://y.y.y.y:9999"); // 1.2. 业务ID int appId = 1; // 1.3. 业务密码 String appPassword = "****************"; // 1.4. 表格组ID int tableGroupId = 1; // 1.5. 表格名称 String tableName = "test";
// 2. 创建客户端 Client client = ClientFactory.createClient(appId, tableGroupId, appPassword, dirList); try { // 3. 构造查询数据的请求 // 3.1. 获取请求对象。为了提升SDK性能,Request对象是复用的 Request request = client.acquireRequest(); // 3.2. 设置请求类型和目标表名 request.setCmd(TcaplusProtocolCsConstants.TCAPLUS_CMD_GET_REQ); request.setTableName(tableName); // 3.3. 设置各个Key字段的值 Record record = request.addRecord(); record.setKeyInt("gameid", 1); record.setKeyInt("itemid", 1); record.setKeyString("name", "test"); // 3.4. 添加需要查询的Value字段 request.addFieldName("typeid"); request.addFieldName("Data"); request.addFieldName("uname");
CountDownLatch latch = new CountDownLatch(1);
// 4. 异步发送请求,并指定返回结果处理器,post方法会立即返回 client.post(request, new Future() {
@Override public void onResponse(Response response) { // 5. 处理结果 if (response.getResult() == 0) { // 查询数据成功 Record result = response.fetchRecord(); // TODO 可在此处添加数据查询成功的后续处理代码 } else { // 查询数据失败 // TODO 可在此处添加数据查询失败的后续处理代码 } }
});
latch.await(); } finally { // 6. 销毁客户端对象 ClientFactory.destroyClient(client); } }
}
复制代码





TcaplusDB 是腾讯出品的分布式 NoSQL 数据库,存储和调度的代码完全自研。具备缓存+落地融合架构、PB 级存储、毫秒级时延、无损水平扩展和复杂数据结构等特性。同时具备丰富的生态、便捷的迁移、极低的运维成本和五个九高可用等特点。客户覆盖游戏、互联网、政务、金融、制造和物联网等领域。

用户头像

TcaplusDB

关注

还未添加个人签名 2020.05.31 加入

TcaplusDB君

评论

发布
暂无评论
【TcaplusDB知识库】异步调用接口示例代码