java - Cassandra - 使用 Java API 设置写入超时

标签 java cassandra key-value-store

我正在尝试使用 Java 驱动器在 Cassandra 中设置写入超时。 SocketOptions 允许我设置读取和连接超时,但不能设置写入超时。 有谁知道在不更改 cassandra.yaml 的情况下执行此操作的方法?

谢谢

阿尔托伯

最佳答案

名称具有误导性,但SocketOptions.getReadTimeoutMillis()适用于驱动程序对 cassandra 的所有请求。您可以将其视为客户端级别的超时。如果在该时间段内 cassandra 节点未返回响应,将引发 OperationTimeoutException 并尝试另一个节点。有关何时向客户端引发异常的更多详细信息,请参阅上面的 javadoc 链接。通常,您会希望此超时大于 cassandra.yaml 中的超时,这就是默认值为 12 秒的原因。

如果您想在客户端有效地管理超时,您可以通过使用 executeAsync 以及 上的定时 get 在每个查询的基础上进行控制>ResultSetFuture 一段时间后放弃请求,即:

ResultSet result = session.executeAsync("your query").get(300, TimeUnit.MILLISECONDS);

如果请求没有在 300 毫秒内完成,这将抛出一个 TimeoutException

关于java - Cassandra - 使用 Java API 设置写入超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33171087/

相关文章:

java - "Error setting operation panel"jconsole 在 a

java - 使用 Jmeter 进行 Cassandra 测试

java - Base-15 转换差异

java - 是否保证所有 Java SE 1.5+ VM 都支持 MacRoman 编码?

apache-spark - 为什么我收到错误 : "Size exceed Integer.MAX_VALUE" when using spark+cassandra?

c# - 如何高性能存储地理散列数据

python - 对与列表中的项目匹配的字典值执行操作?

Java 在磁盘上存储和比较巨大的键值对映射

java - 嵌套布局奇怪的问题

java - 有没有办法将xml文件数据插入cassandra?