【深入理解TcaplusDB技术】示例代码——异步调用接口
【深入理解TcaplusDB技术】示例代码——异步调用接口
本文说明
Java SDK所有接口的调用,都支持异步调用模式。
除数据扫描相关接口,有单独的异步调用模式之外,其它接口的异步调用方式是相同的。
与同步调用的区别是,同步调用的使用的是Client的poll方法发起调用,而异步调用使用的是Client的post方法发起调用。
准备工作
参见章节: 准备工作。
示例代码
本文以异步读取数据为例,介绍非数据扫描接口的异步调用过程。
示例代码
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() {
?