【深入理解TcaplusDB技术】异步扫描数据示例代码——[Generic表]
本文准备工作
参见章节: 准备工作。
示例代码
示例代码
import com.tencent.tcaplus.client.Client;
import com.tencent.tcaplus.client.ClientFactory;
import com.tencent.tcaplus.client.GenericTableTraverser;
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;
?
public class Example {
?
public static void main(String[] arguments) {
// 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. 构造根据部分Key字段值读取数据的请求
// 3.1. 获取请求对象。为了提升SDK性能,Request对象是复用的
Request request = client.acquireRequest();
// 3.2. 创建1个扫描器
GenericTableTraverser traverser = client.getGenericTableTraverser(tableName);
// 3.3. 添加需要读取的Value字段
traverser.addFieldName("typeid");
traverser.addFieldName("Data");
traverser.addFieldName("uname");
// 3.4. 设置一批最多返回的数据条数,由于扫描返回的数据量通常较多,需要分批返回
traverser.setLoadOptions(100);
// 3.5. 设置总共最多返回的数据条数
traverser.setTotalLimit(10000);
?
// 4. 启动扫描器
Iterator<Record> iterator = traverser.start();
?
// 5. 循环从迭代器中获取数据,直到读完所有数据
while (!iterator.hasNext()) {
Record result = iterator.next();
// TODO 在此添加处理返回数据的代码
}
} finally {
// 6. 销毁客户端对象
ClientFactory.destroyClient(client);
}
}
本文准备工作
参见章节: 准备工作。
示例代码
示例代码
import com.tencent.tcaplus.client.Client;
import com.tencent.tcaplus.client.ClientFactory;
import com.tencent.tcaplus.client.GenericTableTraverser;
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;
?
public class Example {
?
public static void main(String[] arguments) {
// 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. 构造根据部分Key字段值读取数据的请求
// 3.1. 获取请求对象。为了提升SDK性能,Request对象是复用的
Request request = client.acquireRequest();
// 3.2. 创建1个扫描器
GenericTableTraverser traverser = client.getGenericTableTraverser(tableName);
// 3.3. 添加需要读取的Value字段
traverser.addFieldName("typeid");
traverser.addFieldName("Data");
traverser.addFieldName("uname");
// 3.4. 设置一批最多返回的数据条数,由于扫描返回的数据量通常较多,需要分批返回
traverser.setLoadOptions(100);
// 3.5. 设置总共最多返回的数据条数
traverser.setTotalLimit(10000);
?
CountDownLatch latch = new CountDownLatch(1);
?
// 4. 异步启动扫描器,并指定返回结果处理器
traverser.startAsync(new Future() {
?