将Cassandra c#驱动程序与多线程结合使用

将Cassandra c#驱动程序与多线程结合使用,c#,multithreading,cassandra,cql3,C#,Multithreading,Cassandra,Cql3,我正在使用Cassandra的c#驱动程序进行多线程处理。 首先,我尝试创建一个连接并执行命令,然后在完成工作后关闭连接。但这似乎对我不起作用,有时它有一个例外,没有可用的主机 所以,我改为使用静态连接。这似乎也很管用。 但当线程运行得太快时,它又会断开。我得放些线。睡上一秒钟,它就会起作用 在这个静态解决方案中,我尝试使用异步进程BeginExecute,但它对我也不起作用,除了没有可用的主机 因此,如果您对使用Cassandra c#driver进行多线程处理有更好的想法或更好的实现,请与我

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

所以,我改为使用静态连接。这似乎也很管用。 但当线程运行得太快时,它又会断开。我得放些线。睡上一秒钟,它就会起作用

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

因此,如果您对使用Cassandra c#driver进行多线程处理有更好的想法或更好的实现,请与我们分享

先谢谢你

干杯, Kin一次只能有一个连接。现在想想,它可能不是线程安全的。但是连接池是线程安全的,因此如果您使用它,您将始终具有高可用性连接

  • 确保您的设置符合要求


  • C#驱动程序肯定应该在多线程环境中工作(1个集群对象,1个会话对象/键空间)

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


  • 如果使用异步方法,则如下所示:

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

    如果您能发布一些代码,我们将不胜感激哪位C#客户???Datastax C#驱动程序或FluentCassandra。默认情况下,Cassandra客户端是并发的。默认限制为64。这是Datastax C#驱动程序。添加一些代码会让我们检查问题1群集对象,1会话对象/键空间,这意味着1群集对象,1会话对象将服务于更新/选择相同键空间的所有线程,对吗?您是如何解决“异常无可用主机”的在第三段中,我在多线程中使用单线程模式。我得到一个会话,并使用session.ExecutAsync或mapper.FetchAsync