代码之家  ›  专栏  ›  技术社区  ›  Nick Berardi

连接到.NET中的Cassandra 0.7

  •  1
  • Nick Berardi  · 技术社区  · 14 年前

    我在升级我的电脑时遇到了很多麻烦 existing library

    这是我将要起诉的基本设置

    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
    

    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();
    

    我上面提供的4种不同的设置都无法执行。他们中的一些人只是锁定,其他人抛出了一个例外。因此,基本上我一直在尝试与新的Cassandra0.7和.NET框架建立连接。

    • all framed :在设置键空间时锁定
    • all socket
    • in: framed out: socket :在设置键空间时锁定
    • in: socket out: framed :在设置键空间时锁定

    我99%确信这与我在Cassandra的节俭层所做的事情有关,因为我无法让这个简单的应用程序工作。但是如果你想浏览我的0.7分支,你可以在这里找到它:

    http://github.com/managedfusion/fluentcassandra/tree/0.7

    2 回复  |  直到 13 年前
        1
  •  1
  •   Nick Berardi    14 年前

    我没有更新Windows中的环境变量以指向0.7的新位置。所以它基本上运行的是稳定版本而不是beta版本。在我更新了环境变量以指向新的位置之后,一切又开始工作了。

        2
  •  0
  •   jbellis    14 年前

    可能C#thrift framed mode代码有缺陷,因为服务器端的所有更改都使framed成为默认模式,而不是unframed。你可以把它换回来卡桑德拉.亚马尔作为解决办法。

    (在连接的输入/输出端指定不同的协议有点疯狂。我所知道的其他节俭语言都不会这么做。如果您深入研究代码生成,这是另一个可能需要解决的问题。)

    推荐文章