我在VPC上有一个Lambda函数,可以连接到Cassandra。
我认为由于冷启动或其他问题,它根本无法连接到Cassandra,Lambda的超时时间为10秒,如果未建立第一个连接,我也想为Cassandra添加超时我将终止脚本并返回出现问题。
我将cassandra-driver用于节点js: 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也不会完成代码,直到超时完成。
答案 0 :(得分:4)
您似乎可以将超时作为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
}
});
创建客户端后,您应该能够在connect方法上指定一个回调(如果它不起作用)。
/* 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重试/杀死/执行其他操作。