在集群主机地址上配置 Spring Data Couchbase

Configure Spring Data Couchbase on a cluster host address

我的数据人员给了我 http://127.0.0.1:8091/pools url 来连接到我们的 Couchbase 服务器,我被告知 pools 后缀是集群中所有节点的地址.

我正在使用 Spring 4.2.0.RELEASE 和 spring-data-couchbase 2.0.0.M1 针对 Couchbase 2.5.1 企业版 (build-1083)

现在,如果我将上面的 url 按原样添加到 getBootstrapHosts 列表中:

  @Override
  protected List<String> getBootstrapHosts() {
    return Collections.singletonList(couchbaseProperties.getHost());
  }

我在 8091/pools 值上遇到数字格式异常。

但是在使用 http://127.0.0.1:8091 url 时,我得到了一个无效密码异常。

我估计第一个 url 是要使用的,但不是我想要的方式。

可能有一个方法我应该在 AbstractCouchbaseConfiguration class 中覆盖,但查看源代码并没有真正启发我。

这是 Couchbase 配置 class。

@Configuration
@EnableCouchbaseRepositories(basePackages = { "com.thalasoft.data.couchbase.repository" })
@ComponentScan(nameGenerator = PackageBeanNameGenerator.class, basePackages = { "com.thalasoft.data.couchbase.config" })
@EnableTransactionManagement
public class CouchbaseConfiguration extends AbstractCouchbaseConfiguration {

  private static Logger logger = LoggerFactory.getLogger(CouchbaseConfiguration.class);

  @Autowired
  private CouchbaseProperties couchbaseProperties;

  @Override
  protected List<String> getBootstrapHosts() {
    return Collections.singletonList(couchbaseProperties.getHost());
  }

  @Override
  protected String getBucketName() {
    return couchbaseProperties.getBucketName();
  }

  @Override
  protected String getBucketPassword() {
    return couchbaseProperties.getBucketPassword();
  }

  @Bean
  public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
     return new PropertySourcesPlaceholderConfigurer();
  }

  @Bean
  public LocalValidatorFactoryBean validator() {
    return new LocalValidatorFactoryBean();
  }

  @Bean
  public ValidatingCouchbaseEventListener validationEventListener() {
    return new ValidatingCouchbaseEventListener(validator());
  }

}

您的数据库管理员给您 127.0.0.1 作为连接地址这一事实看起来很奇怪,但如果集群的一个节点 运行 与客户端代码位于同一位置,则确实可能有效。 ..

这种基于 url 的语法是用于 1.4.x 代 SDK 的语法,2.x 中的配置确实有点不同(反映了 Couchbase SDK 的演变在 1.4.x 和 2.x 之间):您只需要在列表中向 bootstrap 提供每个节点的主机名或 IP。

您应该只尝试 "127.0.0.1"。您也可能需要指定存储桶名称 and/or 密码(询问您的管理员)。 Spring Data Couchbase 使用的每个默认值是 "default"""(空密码),但您可以覆盖 getBucketName()getBucketPassword() 方法18=] 来改变它。

PS:Spring Data Couchbase 文档可用 here