Я пытаюсь подключиться к моему кластеру rabbitmq, который имеет 3 узла, и я был подключен к главному узлу. Но когда я выключил главный узел, мое клиентское соединение было закрыто. Поскольку очередь является кворумной, поэтому на самом деле она должна быть высокодоступной, возможно, что-то не так в моем коде. Вот код производителя
object rmqProducer {
def main(args: Array[String]): Unit = {
val exchangeName = "e1"
val factory = new ConnectionFactory()
factory.setHost("master")
factory.setUsername("admin")
factory.setPassword("123456")
val connection = factory.newConnection
val channel = connection.createChannel()
val routingKey = "eq1"
for (i <- 1 to 100) {
channel.basicPublish(exchangeName, routingKey, MessageProperties.TEXT_PLAIN, i.toString.getBytes("utf-8"))
Thread.sleep(1000)
}
channel.close()
connection.close()
}
}
и код потребителя
object rmqConsumer {
def main(args: Array[String]): Unit = {
val factory = new ConnectionFactory()
factory.setHost("master")
factory.setUsername("admin")
factory.setPassword("123456")
val connection = factory.newConnection
val queue = "test_cluster_q2"
val channel = connection.createChannel()
val consumer = new DefaultConsumer(channel) {
override def handleDelivery(consumerTag: String, envelope: Envelope, properties: AMQP.BasicProperties, body: Array[Byte]): Unit =
println(new String(body))
}
channel.basicConsume(queue, true, consumer)
}
}