Как подключиться к кворуму rabbitmq в scala? - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь подключиться к моему кластеру 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)

  }

}
...