Usare ZeroMQ in Kotlin

Mattepuffo's logo
Usare ZeroMQ in Kotlin

Usare ZeroMQ in Kotlin

ZeroMQ è una libreria per lo scambio di messaggi tra un client ed un server di tipo brokerless!

Sostanzialmente vuol dire che nella libreria è già incluso tutto quello che ci serve, senza altre configurazioni.

In questo articolo vediamo un esempio di utilizzo in Kotlin.

Nello specifico useremo la libreria JeroMQ, che potete installare con Maven:

        <dependency>
            <groupId>org.zeromq</groupId>
            <artifactId>jeromq</artifactId>
            <version>0.5.2</version>
        </dependency>

Qui sotto un esempio di server:

import org.zeromq.SocketType
import org.zeromq.ZContext
import org.zeromq.ZMQ

fun main(args: Array<String>) {
    ZContext().use { context ->
        println("Server avviato...")

        val socket: ZMQ.Socket = context.createSocket(SocketType.REP)
        socket.bind("tcp://*:5555")

        while (!Thread.currentThread().isInterrupted) {
            val reply: ByteArray = socket.recv(0)
            println("Dato ricevuto: [" + String(reply, ZMQ.CHARSET) + "]")

            val response = "CIAO DAL SERVER!"
            socket.send(response.toByteArray(ZMQ.CHARSET), 0)
        }
    }
}

Se invece volessimo creare un client:

import org.zeromq.SocketType
import org.zeromq.ZContext
import org.zeromq.ZMQ

fun main(args: Array<String>) {
    ZContext().use { context ->
        println("Connessione al server...")

        val socket = context.createSocket(SocketType.REQ)
        socket.connect("tcp://localhost:5555")

        for (requestNbr in 0..9) {
            val request = "CIAO DAL CLIENT!"
            socket.send(request.toByteArray(ZMQ.CHARSET), 0)
            val reply = socket.recv(0)
            println("RISPOSTA DAL SERVER: " + String(reply, ZMQ.CHARSET) + " " + requestNbr)
        }
    }
}

Enjoy!


Condividi

Commentami!