Как создать фантомное соединение 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 со всеми вариантами, подобными приведенным выше.
Я посмотрел в коде здесь
и попробовал
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)
)
)
}