mqtt-benchmark-component/src/main/kotlin/MQTTSubscriber.kt

63 lines
1.9 KiB
Kotlin
Raw Normal View History

2020-10-21 16:57:36 +02:00
import org.eclipse.paho.client.mqttv3.*
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence
2020-10-21 17:53:07 +02:00
import java.time.Instant
2020-10-21 16:57:36 +02:00
2020-10-21 18:34:52 +02:00
class MqttSubscriber() : MqttCallbackExtended {
2020-10-21 16:57:36 +02:00
private val broker = "tcp://mqtt.k8s.kmlabz.com:1883"
private val clientId = MqttClient.generateClientId()
private val persistence = MemoryPersistence()
2020-10-21 18:34:52 +02:00
private val mqttClient = MqttClient(broker, clientId, persistence)
2020-10-21 17:53:07 +02:00
private val benchValues = HashMap<Int, Instant>()
2020-10-21 18:34:52 +02:00
private val connOpts = MqttConnectOptions()
init {
connOpts.isCleanSession = true
connOpts.userName = "birbnetes"
connOpts.password = "de4d2182".toCharArray()
connOpts.isAutomaticReconnect = true
2020-10-21 18:38:27 +02:00
mqttClient.setCallback(this)
2020-10-21 18:34:52 +02:00
}
2020-10-21 16:57:36 +02:00
override fun connectionLost(arg0: Throwable) {
System.err.println("connection lost")
}
override fun deliveryComplete(arg0: IMqttDeliveryToken) {
}
@Throws(Exception::class)
override fun messageArrived(topic: String, message: MqttMessage) {
println("topic: $topic")
2020-10-21 17:53:07 +02:00
benchValues.put(topic.split("/")[1].toInt(),Instant.now())
2020-10-21 16:57:36 +02:00
println("message: " + String(message.payload))
}
override fun connectComplete(reconnect: Boolean, serverURI: String?) {
2020-10-21 18:03:11 +02:00
println("Subscribing to all topics")
2020-10-21 18:34:52 +02:00
try {
mqttClient.subscribe("#", 0)
}catch (e: MqttException) {
e.printStackTrace();
}
2020-10-21 16:57:36 +02:00
}
fun connect() {
2020-10-21 18:03:11 +02:00
println("Connecting to broker")
2020-10-21 18:34:52 +02:00
try {
mqttClient.connect(connOpts)
}catch (e: MqttException) {
e.printStackTrace();
}
2020-10-21 16:57:36 +02:00
}
2020-10-21 17:53:07 +02:00
fun disconnect(): HashMap<Int, Instant> {
2020-10-21 18:03:11 +02:00
println("Disconnecting from broker")
2020-10-21 18:34:52 +02:00
try {
mqttClient.disconnect()
}catch (e: MqttException) {
e.printStackTrace();
}
2020-10-21 17:53:07 +02:00
mqttClient.close()
return benchValues
}
2020-10-21 16:57:36 +02:00
}