Connessione a RabbitMQ in Kotlin
In questo articolo vediamo come connetterci a RabbitMQ usando Kotlin e 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!
kotlin maven rabbitmq
Commentami!