Connessione a RabbitMQ in Kotlin

Mattepuffo's logo
Connessione a RabbitMQ in Kotlin

Connessione a RabbitMQ in Kotlin

In questo articolo vediamo come connetterci a RabbitMQ usando Kotlin AMPQ.

La libreria la possiamo installare facilmente tramite Maven.

Ecco la dipendenza da aggiungere:

<dependency>
  <groupId>com.rabbitmq</groupId>
  <artifactId>amqp-client</artifactId>
  <version>5.25.0</version>
</dependency>

Qua sotto un pò di codice in cui inviamo 100 messaggi e poi li leggiamo tutti:

package org.example

import com.rabbitmq.client.ConnectionFactory
import java.io.IOException
import java.util.concurrent.TimeoutException


fun main() {
  val queueName = "test_kotlin"

  val factory = ConnectionFactory()
  factory.host = "localhost"


  // INVIO
  try {
    factory.newConnection().use { connection ->
      connection.createChannel().use { channel ->
        channel.queueDeclare(queueName, false, false, false, null)
        for (i in 1..100) {
          val message = "Messaggio $i"
          channel.basicPublish("", queueName, null, message.toByteArray())
          println("[x] Invio: $message")
        }
      }
    }
  } catch (e: IOException) {
    println(e.message)
  } catch (e: TimeoutException) {
    println(e.message)
  }

  // RICEVO
  try {
    factory.newConnection().use { connection ->
      connection.createChannel().use { channel ->
        channel.queueDeclare(queueName, false, false, false, null)
        println("[*] Lettura di tutti i messaggi nella coda...")
        while (true) {
          val response = channel.basicGet(queueName, true)

          if (response == null) {
            println("[*] Fine messaggi nella coda.")
            break
          }

          val msg = String(response.getBody())
          println("[x] Ricevuto: $msg")
        }
      }
    }
  } catch (e: IOException) {
    println(e.message)
  } catch (e: TimeoutException) {
    println(e.message)
  }
}

Come al solito per comodità ho messo tutto insieme.

Enjoy!


Condividi

Commentami!