use

suspend fun <T> MqttClient.use(endpoint: MqttEndpoint, block: suspend (MqttClient) -> T): T

Connect, execute block, then close — structured resource management.

Ensures MqttClient.close is called even if block throws, similar to java.io.Closeable.use {} or Ktor's HttpClient.use {}.

MqttClient("sensor").use(MqttEndpoint.parse("tcp://broker:1883")) { client ->
client.subscribe("sensors/#", QoS.AT_LEAST_ONCE)
client.publish("sensors/temp", "22.5")
delay(10_000)
}

Return

The result of block.

Parameters

endpoint

Broker endpoint to connect to.

block

Suspend lambda receiving the connected client.