У меня возникли проблемы с попыткой обновить мой existing library от Cassandra 0.6 до 0.7 beta1. Первоначально я думал, что это был порядок операций, поэтому я решил разбить его на основы.Подключение к Cassandra 0.7 в .NET
Вот основные настройки, которые я буду судится
TTransport framedTransport = new TFramedTransport(new TSocket("localhost", 9160));
TTransport socketTransport = new TSocket("localhost", 9160);
TProtocol framedProtocol = new TBinaryProtocol(framedTransport);
TProtocol socketProtocol = new TBinaryProtocol(socketTransport);
Затем я попытался изменить настройки клиента следующими способами коммутации входных и выходных протоколов:
var client = new Cassandra.Client(framedProtocol, framedProtocol); // all framed
var client = new Cassandra.Client(socketProtocol, socketProtocol); // all socket
var client = new Cassandra.Client(framedProtocol, socketProtocol); // in: framed out: socket
var client = new Cassandra.Client(socketProtocol, framedProtocol); // in: socket out: framed
Затем я запускаю следующую программу, которая использует конфигурацию Cassandra по умолчанию, которая приходит from the download, и я делаю простой запрос, такой как счетчик, который, как я ожидаю, он будет возвращать ноль, поскольку данные не были вставлены.
framedTransport.Open();
socketTransport.Open();
Console.WriteLine("Start");
client.set_keyspace("Keyspace1");
var key = System.Text.Encoding.ASCII.GetBytes("MyKey");
var columns = new List<byte[]>(new[] { System.Text.Encoding.ASCII.GetBytes("MyColumn") });
var column_parent = new ColumnParent {
Column_family = "Standard1"
};
var predicate = new SlicePredicate {
Column_names = columns
};
client.get_count(key, column_parent, predicate, ConsistencyLevel.ALL);
Console.WriteLine("Done");
Console.Read();
Каждая из четырех различных настроек, указанных выше, не выполняется. Несколько из них просто запираются, а другие бросают исключение. Поэтому в основном я застреваю, пытаясь получить соединение для работы с новой Cassandra 0.7 с платформой .NET.
Вот типы проблем, которые я нашел с каждым:
all framed
: замки на set_keyspaceall socket
: бросками Неверное имя метода: 'set_keyspace' на set_keyspacein: framed out: socket
: замки на set_keyspacein: socket out: framed
: замки на set_keyspace
Я на 99% уверен, что это связано с чем-то, что я делаю на уровне Thrift Cassandra, так как я не могу заставить это простое приложение работать. Но если вы хотите, чтобы браузер моей ветка 0.7 вы можете найти его здесь:
http://github.com/managedfusion/fluentcassandra/tree/0.7
, так что это была ваша ошибка, выполняемая cassandra, и вы проголосовали за -1 за ответ jbellis, в то время как он упомянул наиболее распространенную ситуацию при подключении к 0,7? –
BTW, не используйте переменные среды. –
Нет другого способа простого запуска командного файла Cassandra, кроме использования переменных среды. И jbellis получил признание, потому что все, что он сказал, было личным мнением, не основанным на самом деле вообще. Код C# Thrift не является ошибкой, это одна из библиотек в Thrift, которая не испытывала никаких изменений с 0,2 до 0,4. Во-вторых, не нужно указывать разные протоколы для входа и выхода, особенно если вы хотите использовать другой сервер для чтения и записи. Он получил признание, потому что ничто из этого не было основано на самом деле. Кстати, вы не должны использовать систему голосования для злобных действий. –