【问题标题】:How to cancel/abort Cassandra query?如何取消/中止 Cassandra 查询?
【发布时间】:2015-10-06 10:11:45
【问题描述】:
在 NodeJS Cassandra 代码中,在处理来自 client.stream() 或 client.eachRow() 的每一行的回调时,停止迭代的正确方法是什么?我如何告诉客户对象我不再对结果感兴趣。甚至可能值得引发“错误”或“完成”事件。
另外,如果在以异步方式处理一行时,代码使用相同的客户端对象启动另一个查询,那么 nodejs-driver 会不会有任何问题?
【问题讨论】:
标签:
node.js
cassandra
cassandra-2.0
【解决方案1】:
使用client.stream,您正在使用stream.Readable,因此您可以在流上调用pause(),但是,驱动程序将继续解析和缓冲数据并拉入新页面(假设启用了自动分页)。
使用client.stream 和client.eachRow 时,您可以提供autoPage 选项来确定驱动程序在到达页面末尾时是否继续分页。如果您担心从大型结果集中读取过多数据,您可以将上一个查询的 pageState 用于下一个查询(例如 here)。不幸的是,这不适用于client.stream (NODEJS-145)。
另外,如果在以异步方式处理一行时,代码使用相同的客户端对象启动另一个查询,那么 nodejs-driver 会不会有任何问题?
这不会是一个问题:)