繁体   English   中英

在多线程中使用Cassandra c#驱动程序

[英]using Cassandra c# driver with multi-thread

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

因此,我改为使用静态连接。 它似乎也可以正常工作。 但是,当线程工作太快时,它又被破坏了。 我必须将一些Thread.Sleep放置1秒钟,然后它才能工作。

并使用此静态解决方案,我尝试使用异步过程BeginExecute,但对我也不起作用,除了没有可用的主机外。

因此,任何人在使用Cassandra c#驱动程序进行多线程处理方面都有更好的主意或更好的实现,如果可以共享,将不胜感激。

先感谢您。

干杯,健

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

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

Statement sta=new SimpleStatement("Select * from XXX where XXX;");
session.ExecutAsync(sta);
  1. 确保您的设置满足连接要求

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

  3. 很难说为什么看到NoHostAvailable异常而没有看到任何代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM