#java #scala #hazelcast #vert.x
#java #scala #hazelcast #vert.x
Вопрос:
Я попытался запустить этот код, но он выдает ошибку. Кажется, что я не могу привязаться к определенному IP-адресу; скорее мне нужно привязаться к сетевому интерфейсу. есть ли какой-либо способ обойти эту проблему?
import io.vertx.core.VertxOptions
import io.vertx.reactivex.core.Vertx
import io.vertx.spi.cluster.hazelcast.{ ConfigUtil, HazelcastClusterManager }
object Test extends App {
val host = "127.0.0.2"
def getConfig(): Config = {
import scala.collection.JavaConverters._
val config = ConfigUtil.loadConfig()
config.setProperty("hazelcast.socket.bind.any", "false")
config
.getNetworkConfig
.setPortAutoIncrement(false)
.getInterfaces
.setEnabled(true)
.setInterfaces(List(s"127.0.0.2").asJava)
val joinConfig = config.getNetworkConfig.getJoin
joinConfig
.getMulticastConfig
.setEnabled(false)
config
}
def run(): Unit = {
val mgr = new HazelcastClusterManager(getConfig())
val options = new VertxOptions().setClusterManager(mgr)
options.getEventBusOptions.setHost(host)
val vrtx = Vertx.rxClusteredVertx(options).blockingGet()
}
run()
}
Я получаю java.lang.RuntimeException: Hazelcast CANNOT start on this node. No matching network interface found.
Комментарии:
1. Мне нужно было добавить ip-адрес в интерфейс обратной связи. посмотрите askubuntu.com/questions/444124/how-to-add-a-loopback-interface за подробностями.
Ответ №1:
Проверьте этот раздел документации и ссылку в документе: https://docs.hazelcast.org/docs/latest/manual/html-single/index.html#discovering-members-by-tcp
Что вам нужно, так это отключить Hazelcast для привязки всех интерфейсов, установив значение hazelcast.socket.bind.any
false
. Затем вы можете использовать интерфейсы, как описано здесь: https://docs.hazelcast.org/docs/latest/manual/html-single/index.html#interfaces