Как создать фантомное соединение Cassandra из d asastax ClusterBuilder

У меня есть следующий код, написанный на драйвере datastax для установления соединения cassandra.

  val cluster = Cluster.builder()
     .withCompression(ProtocolOptions.Compression.LZ4)
     .addContactPoints(List("a", "b").asJava)
     .withCredentials("foo", "bar")
     .withPort(1111)
     .withProtocolVersion(ProtocolVersion.V4)
     .withPoolingOptions(new PoolingOptions()
        .setConnectionsPerHost(HostDistance.LOCAL, 1, 12)
        .setConnectionsPerHost(HostDistance.REMOTE, 1, 12)
        .setMaxRequestsPerConnection(HostDistance.LOCAL, 1028)
        .setMaxRequestsPerConnection(HostDistance.REMOTE, 1028)
     )
     .withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.QUORUM))

Я пытаюсь перенести этот код, чтобы начать использовать PhantomDSL.

Я хочу построить PhantomDSL CassandraConnection со всеми вариантами, подобными приведенным выше.

Я посмотрел в коде здесь

https://github.com/outworkers/phantom/blob/develop/phantom-connectors/src/main/scala/com/outworkers/phantom/connectors/CassandraConnection.scala

и попробовал

val phantomConnection = new CassandraConnection("foo", cluster, false)

Я получаю ошибку

[error] MyConnection.scala:37: type mismatch;
[error]  found   : com.datastax.driver.core.Cluster.Builder
[error]  required: com.outworkers.phantom.connectors.ClusterBuilder
[error]     (which expands to)  com.datastax.driver.core.Cluster.Builder => com.datastax.driver.core.Cluster.Builder
[error] Error occurred in an application involving default arguments.
[error]       new CassandraConnection("foo", cluster, false)
[error]                                       ^

1 ответ

Решение

Просто используйте родной _.withClusterBuilder метод, который позволит вам достичь того, что вы хотите. Извиняюсь за поздний ответ, мы отслеживаем вопросы к этому тегу, но по какой-то причине он так и не попал ни в один из наших почтовых ящиков.

object Connector {
  val default: CassandraConnection = ContactPoint.local
    .withClusterBuilder(
      _.withCompression(ProtocolOptions.Compression.LZ4)
       .withCredentials("foo", "bar")
       .withPort(1111)
       .withProtocolVersion(ProtocolVersion.V4) 
    ).noHeartbeat().keySpace(
      KeySpace("phantom").ifNotExists().`with`(
        replication eqs SimpleStrategy.replication_factor(1)
      )
    )
}
Другие вопросы по тегам