1

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

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

使用这个静态解决方案,我尝试使用异步进程 BeginExecute,但它对我也不起作用,没有可用的主机例外。

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

先感谢您。

干杯,金

4

3 回答 3

1

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

于 2013-08-27T12:56:24.350 回答
1

如果你使用异步方法,它看起来像这样:

Statement sta=new SimpleStatement("Select * from XXX where XXX;");
session.ExecutAsync(sta);
于 2017-03-11T16:12:12.967 回答
0
  1. Make sure your setup is satisfying the connection requirements

  2. The C# driver should definitely work in a multi-threading environment (1 cluster object, 1 session object/keyspace)

  3. It's difficult to say why you are seeing the NoHostAvailable exception without seeing any code.

于 2013-08-30T08:32:12.387 回答