使用带多线程的Cassandra c#驱动程序

时间:2013-08-27 12:51:39

标签: c# multithreading cassandra cql3

我正在使用带有多线程处理的Cassandra的c#驱动程序。 首先,我尝试创建连接并执行命令,然后在完成工作后关闭连接。但它似乎对我不起作用,有时它会有一个例外,即无主机可用。

所以,我改为使用静态连接。它似乎也有效。 但是当线程工作得太快时,它又被打破了。我要把一些Thread.Sleep放1秒然后才能工作。

使用这个静态解决方案,我尝试使用异步进程,BeginExecute,它也不适用于我,例外无主机可用。

因此,任何人在使用Cassandra c#驱动程序的多线程处理方面都有更好的想法或更好的实现,如果你能分享,我们将不胜感激。

提前谢谢。

干杯, 健

3 个答案:

答案 0 :(得分:1)

CassandraSession一次只能有一个连接。现在考虑它可能不是线程安全的。但是连接池是线程安全的,所以如果你使用它,你将始终拥有高可用性连接

答案 1 :(得分:1)

如果使用异步方法,它看起来像是:

Statement sta=new SimpleStatement("Select * from XXX where XXX;");
session.ExecutAsync(sta);

答案 2 :(得分:0)

  1. 确保您的设置满足connection requirements

  2. C#驱动程序绝对应该在多线程环境中工作(1个集群对象,1个会话对象/密钥空间)

  3. 很难说为什么在没有看到任何代码的情况下看到NoHostAvailable异常。