如何在 Cassandra + AWS Lambda 中处理超时
How to handle timeouts in Cassandra + AWS Lambda
我有一个连接到 Cassandra 的带有 VPC 的 Lambda 函数。
我认为由于冷启动或其他问题它根本无法连接到 Cassandra,Lambda 有 10 秒的超时,我想为 Cassandra 添加超时,如果第一次连接没有正在制作我将终止脚本,return 有问题。
我正在为节点 js 使用 cassandra 驱动程序:
https://github.com/datastax/nodejs-driver/
连接:
const cassandra = require('cassandra-driver');
const client = new cassandra.Client({ contactPoints: ['127.0.0.1'], keyspace: 'keyspace' });
我无法使用 nodejs 的超时然后检查连接,因为即使一切正常,Lambda 也不会在超时完成之前完成代码。
您似乎可以使用超时作为 Client
对象的可选参数 here
这应该是将此可选参数分配给您偏好的值的问题。您还应该在回调函数中寻找处理连接问题的方法。
const cassandra = require('cassandra-driver');
/* Documentation: github.com/datastax/nodejs-driver/blob/master/lib/client.js - line 120*/
const client = new cassandra.Client(
{
contactPoints: ['127.0.0.1'],
keyspace: 'keyspace',
socketOptions:
{
connectTimeout: 2000
}
});
创建客户端后,您应该能够指定(如果它不起作用)连接方法的回调。
/* Documentation: github.com/datastax/nodejs-driver/blob/master/lib/client.js - line 320 */
client.connect(function (err) {
if (err) return console.error(err); /* your attempt to connect is terminated here. */
console.log('Connected to cluster with %d host(s): %j',
client.hosts.length, client.hosts.keys());
});
一旦您确认您的 (err) 存在 - 您的连接尝试基本上已终止。您可以使用 AWS lambda 重试/终止/执行其他操作。
我有一个连接到 Cassandra 的带有 VPC 的 Lambda 函数。
我认为由于冷启动或其他问题它根本无法连接到 Cassandra,Lambda 有 10 秒的超时,我想为 Cassandra 添加超时,如果第一次连接没有正在制作我将终止脚本,return 有问题。
我正在为节点 js 使用 cassandra 驱动程序: https://github.com/datastax/nodejs-driver/
连接:
const cassandra = require('cassandra-driver');
const client = new cassandra.Client({ contactPoints: ['127.0.0.1'], keyspace: 'keyspace' });
我无法使用 nodejs 的超时然后检查连接,因为即使一切正常,Lambda 也不会在超时完成之前完成代码。
您似乎可以使用超时作为 Client
对象的可选参数 here
这应该是将此可选参数分配给您偏好的值的问题。您还应该在回调函数中寻找处理连接问题的方法。
const cassandra = require('cassandra-driver');
/* Documentation: github.com/datastax/nodejs-driver/blob/master/lib/client.js - line 120*/
const client = new cassandra.Client(
{
contactPoints: ['127.0.0.1'],
keyspace: 'keyspace',
socketOptions:
{
connectTimeout: 2000
}
});
创建客户端后,您应该能够指定(如果它不起作用)连接方法的回调。
/* Documentation: github.com/datastax/nodejs-driver/blob/master/lib/client.js - line 320 */
client.connect(function (err) {
if (err) return console.error(err); /* your attempt to connect is terminated here. */
console.log('Connected to cluster with %d host(s): %j',
client.hosts.length, client.hosts.keys());
});
一旦您确认您的 (err) 存在 - 您的连接尝试基本上已终止。您可以使用 AWS lambda 重试/终止/执行其他操作。