如果缺少一台主机,Datastax Java 驱动程序将无法连接

2024-04-19

如果我没记错的话,可以连接到 Cassandra 集群,至少知道集群中的一个节点,然后可以发现其他节点。

假设我有三个节点(1、2 和 3),并且我像这样连接到这些节点:

Cluster.builder().addContactPoints("1,2,3".split(",")).build();

然后,如果节点 3 发生故障,并且无法解析 IP,则这行代码将抛出IllegalArgumentException如文档中所述:

@throws IllegalArgumentException if no IP address for at least one of {@code addresses} could be found

为什么有人想要这种行为?我的意思是,如果其中一个节点发生故障,我希望应用程序能够运行,因为 Cassandra 仍然工作正常。

我已经检查过这个Cassandra Java驱动程序:多少个接触点是合理的? https://stackoverflow.com/questions/26852413/cassandra-java-driver-how-many-contact-points-is-reasonable但这并不能回答我的问题,因为它没有说明任何关于无法访问的主机的信息。

我应该如何处理这个问题?也许这在另一个版本的java驱动程序中被改变了?我目前正在使用cassandra-driver-core-3.0.3


此验证只是为了确保可以解析所有提供的主机,它甚至不检查 Cassandra 服务器是否在每个主机上运行。因此,基本上是为了确保您在提供主机时没有犯任何拼写错误,因为实际上它并不认为提供的主机无法解析可能是正常用例。

作为您的情况的解决方法(主机已从 DNS 条目中删除),您可以简单地调用该方法addContactPoint(String address) http://docs.datastax.com/en/drivers/java/3.0/com/datastax/driver/core/Cluster.Builder.html#addContactPoint-java.lang.String-明确地而不是使用addContactPoints(String... addresses)(在幕后简单地调用addContactPoint(String address)对于每个提供的地址)并自行管理异常。

代码可能是这样的:

Cluster.Builder builder = Cluster.builder();
// Boolean used to check if at least one host could be resolved
boolean found = false;
for (String address : "1,2,3".split(",")) {
    try {
        builder.addContactPoint(address);
        // One host could be resolved
        found = true;
    } catch (IllegalArgumentException e) {
        // This host could not be resolved so we log a message and keep going
        Log.log(
            Level.WARNING, 
            String.format("The host '%s' is unknown so it will be ignored", address)
        );
    }
}
if (!found) {
    // No host could be resolved so we throw an exception
    throw new IllegalStateException("All provided hosts are unknown");
}
Cluster cluster = builder.build();

FYI:我刚刚创建了一个票证来提议改进 Java 驱动程序https://datastax-oss.atlassian.net/browse/JAVA-1334 https://datastax-oss.atlassian.net/browse/JAVA-1334.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果缺少一台主机,Datastax Java 驱动程序将无法连接 的相关文章

  • Mockito 在调用参数数量可变的方法时使用参数匹配器

    我试图在对具有可变数量参数的方法的调用中使用参数匹配器 Java 中的东西 没有成功 我的代码如下 我还将列出我尝试用来完成此工作的所有行 import static org mockito Mockito public class Met
  • 从 java sdk 向对等方发送提案时出现访问被拒绝错误

    我正在尝试使用以下代码查询区块链并收到访问被拒绝错误 我也遇到同样的错误sendTransactionProposal方法也是如此 UserContext adminUserContext RegisterEnrollUser regist
  • JDK 文档是语言规范的一部分吗?

    只有一名官员Java语言规范 https docs oracle com javase specs jls se8 html index html所有 Java 实现都必须遵守它 API文档怎么样 所有Java实现都需要遵守吗这个版本 ht
  • 如何将画廊意图中的“打开”更改为“完成”?

    我使用以下意图打开画廊来选择多个图像和视频 Intent intent new Intent intent setType image video intent putExtra Intent EXTRA ALLOW MULTIPLE tr
  • createImage(int width, int height) 的问题

    我有以下代码 作为游戏的一部分每 10 毫秒运行一次 private void gameRender if dbImage null createImage returns null if GraphicsEnvironment isHea
  • Spring Security 自定义过滤器

    我想自定义 Spring security 3 0 5 并将登录 URL 更改为 login 而不是 j spring security check 我需要做的是允许登录 目录并保护 admin report html 页面 首先 我使用教
  • Java:无法从同一包中的不同类访问静态变量

    这很奇怪 因为我有一个可以访问 Frame dimension getWidth 的 Character 类 及其伙伴 getHeight 但是当我想在 Map 类中使用它时 Eclipse 强调了它并且无法给我反馈 运行该程序最终会出现
  • 如何在 Firebase 远程配置中从 JSON 获取值

    我是 Android 应用开发和 Firebase 的新手 我想知道如何获取存储在 Firebase 远程配置中的 JSONArray 文件中的值 String 和 Int 我使用 Firebase Remote Config 的最终目标是
  • 如何在 Antlr4 中为零参数函数编写语法

    我的函数具有参数语法 如下面的词法分析器和解析器 MyFunctionsLexer g4 lexer grammar MyFunctionsLexer FUNCTION FUNCTION NAME A Za z0 9 DOT COMMA L
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • 在 Wildfly 中与 war 部署共享 util jar 文件

    假设我有一个名为 util jar 的 jar 文件 该 jar 文件主要包含 JPA 实体和一些 util 类 无 EJB 如何使这个 jar 可用于 Wildfly 中部署的所有 war 无需将 jar 放置在 war 的 WEB IN
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 如何在代理后面安装 Eclipse Neon

    对于 Neon Eclipse 附带了一个安装程序 我在安装程序中找不到任何配置菜单 我的java版本是 java version java version 1 8 0 72 Java TM SE Runtime Environment b
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • 如何在 Spring 属性中进行算术运算?

  • QuerySyntaxException:无法找到类

    我正在使用 hql 生成 JunctionManagementListDto 类的实际 Java 对象 但我最终在控制台上出现以下异常 org hibernate hql internal ast QuerySyntaxException
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • 返回 Java 8 中的通用函数接口

    我想写一种函数工厂 它应该是一个函数 以不同的策略作为参数调用一次 它应该返回一个函数 该函数根据参数选择其中一种策略 该参数将由谓词实现 嗯 最好看看condition3为了更好的理解 问题是 它没有编译 我认为因为编译器无法弄清楚函数式
  • 是否可以使用 Java Guava 将函数应用于集合?

    我想使用 Guava 将函数应用于集合 地图等 基本上 我需要调整 a 的行和列的大小Table分别使所有行和列的大小相同 执行如下操作 Table

随机推荐

  • 如何用序列图来展示一个类与另一个类之间的关系,以该类的实例的实例作为输入?

    我将使用之前的相同示例question https stackoverflow com questions 66934927 how to represent the relationship between an instance of
  • 如何使图像视图的选择器仅更改背景而不更改图像源?

    我有一个 ImageView 同时设置了图像 src 和背景颜色 该图像位于 gridview 项目布局的布局中 我想创建一个 xml 选择器 当选择该项目时 图像背景会改变 但图像 src 不会改变 类似于带有文本图标的android主菜
  • 如何在elasticsearch中配置synonym_path

    我对 elasticsearch 很陌生 我想使用同义词 我在配置文件中添加了这些行 index analysis analyzer synonym type custom tokenizer whitespace filter synon
  • Lisp / Clojure:编写函数生成宏是个好主意吗?

    这个问题 https stackoverflow com q 7852351 346587要求创建一个 Clojure 宏来生成多个函数 我们找到了一种方法来做到这一点 但仍被 这是一个好主意吗 的问题所困扰 我的第一反应是并不真地 有两个
  • 无法从 sonarqube 服务器更新数据

    当 sonarlint eclipse 要求我刷新我的 sonarqube 数据 更新所有项目绑定 时 我收到以下错误 Unable to update data from server cerbere Unable to move C w
  • pthread_join() 用于异步线程

    我写了一个简单的演示程序 以便我可以理解pthread join 功能 我知道如何使用pthread condition wait 函数允许异步线程 但我试图了解如何使用pthread join 功能 在下面的程序中我通过线程1s ID t
  • 部分 GSON 反序列化

    我正在实施一个自定义JsonDeserializer因为处理所需的业务逻辑 但有些部分可以用标准方式解析 这是否可能 自己处理一些元素并让一些嵌套元素自动处理 这是 JSON id 10 games PZ definition count
  • 将项目 own_to 关系添加到 Active Admin

    我正在为我的 Rails 应用程序使用活动管理 我有一个客户模型 它属于一个部门 也属于一个交货时间 在我的管理文件夹中 我有一个用于主动管理的 customer rb 文件 该文件看起来像这样 ActiveAdmin register C
  • 如何将数据库从本地主机移动到实时服务器

    我使用 Xampp 构建了一个数据库和网站 它允许我使用和测试 php 以及托管在本地主机上的数据库 我现在想将其移至实时服务器 我已使用 123 reg 将网站移至实时服务器 如何移动数据库 我尝试导出 phpmyadmin 数据库并将
  • 从单独的键和值列表创建字典(dict)

    我想将这些结合起来 keys name age food values Monty 42 spam 放入单个字典中 name Monty age 42 food spam 我怎样才能做到这一点 像这样 keys a b c values 1
  • .htaccess:如何通过IP限制对单个文件的访问?

    我已经查看了所有内容 但不断遇到有关目录级 IP 限制的相同信息 通常如下所示 Order Deny Allow Deny from all Allow from 123 123 123 123 是否可以将相同类型的访问限制绑定到页面 文档
  • 高级分析对于所选进程不可用

    我正在尝试使用 3 0 中的 Android Studio 分析器分析 APK 由于我使用的不是 Android 7 0 因此我必须在模块配置中显式打开高级分析 问题是 完成此操作后 Android Studio 仍然显示 高级分析对于所选
  • 如何在管理面板中显示插件激活通知?

    当我激活测试插件时 我试图在管理面板中显示通知 我怎样才能显示它 那个方法是什么 对于插件激活 不能直接使用 admin notices 挂钩 因为存在重定向 解决方法是将您的通知存储在选项表中 并在下次检查 另外 如果您还想涵盖插件升级和
  • Django 表单验证:获取 JSON 格式的错误

    我有这个非常简单的 Django 表单 from django import forms class RegistrationForm forms Form Username forms CharField Password forms C
  • c# listview取消选择项目

    我正在开发一个 Windows 应用程序 它有一个包含一堆项目的 ListView 当用户单击某个项目时 应用程序会显示该项目的详细信息 这 然后用户就有机会编辑这些详细信息 用户应该单击 每次更改后都会单击 保存 按钮 但当然这种情况并不
  • 如何解析没有对象名称的 JSON 数组

    我将如何在 Java 中解析这个 JSON 数组 我很困惑 因为没有对象 谢谢 编辑 我是个白痴 我应该阅读文档 这可能就是它的用途 id 63565 name Buca di Beppo user null phone 408 377 7
  • Python Flask 导入未导入模块的错误

    我有一个在 Google App Engine 中运行的 Flask 应用程序 昨天 我部署了应用程序的新版本 其中仅更改了 HTML 样式 它按预期部署 今天 我意识到我没有更改每个相应 HTML 页面的标题 因此我只更改了每个 HTML
  • android服务的onCreate未调用

    我想以静态方式启动服务 所以从我的活动中我打电话 SpeechActivationService makeStartServiceIntent this getApplicationContext WordActivator 这是从服务类扩
  • 在 VIM 中切换语法高亮的隐藏属性

    我目前有一个解析日志文件的语法文件 与以下内容非常相似 这是针对 syslog 的 syn match syslogText syn match syslogFacility 1 nextgroup syslogText skipwhite
  • 如果缺少一台主机,Datastax Java 驱动程序将无法连接

    如果我没记错的话 可以连接到 Cassandra 集群 至少知道集群中的一个节点 然后可以发现其他节点 假设我有三个节点 1 2 和 3 并且我像这样连接到这些节点 Cluster builder addContactPoints 1 2