Как обрабатывать таймауты в Cassandra + AWS Lambda - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть функция Lambda с VPC, которая подключается к Cassandra.

Я думаю, что из-за холодного запуска или из-за других проблем он вообще не может подключиться к Cassandra, у Lambda есть тайм-аут 10 с.Я также хочу добавить тайм-аут для Cassandra, если первое соединение не было установлено, я уничтожу скрипт и верну, что возникла проблема.

Я использую драйвер cassandra для узла 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, а затем проверить соединение, потому что лямбда не завершит код, пока тайм-аут не закончится, дажеесли бы все было хорошо.

1 Ответ

0 голосов
/ 11 декабря 2018

Похоже, у вас есть тайм-аут, доступный вам в качестве необязательного параметра для Client объекта здесь

Это должен быть вопрос присвоения этого необязательного параметра значению вашегопредпочтение.Вам также следует обратить внимание на решение проблемы соединения в функции обратного вызова.

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.

...