Make MQTT client try to reconnect on connection lost or disconnect

This commit is contained in:
Nadja Reitzenstein 2022-02-14 19:56:39 +01:00
parent 89b292a8ac
commit 2777645205

View File

@ -129,7 +129,19 @@ impl Actuator for Dummy {
pub fn load(log: &Logger, config: &Config) -> Result<(ActorMap, Vec<Actor>)> { pub fn load(log: &Logger, config: &Config) -> Result<(ActorMap, Vec<Actor>)> {
let mut map = HashMap::new(); let mut map = HashMap::new();
let mqtt = AsyncClient::new(config.mqtt_url.clone())?; let mut mqtt = AsyncClient::new(config.mqtt_url.clone())?;
let dlog = log.clone();
mqtt.set_disconnected_callback(move |c, prop, reason| {
error!(dlog, "got Disconnect({}) message from MQTT Broker: {:?}", reason, prop);
let tok = c.reconnect();
smol::block_on(tok);
});
let dlog = log.clone();
mqtt.set_connection_lost_callback(move |c| {
error!(dlog, "lost connection to MQTT Broker!");
let tok = c.reconnect();
smol::block_on(tok);
});
let tok = mqtt.connect(paho_mqtt::ConnectOptions::new()); let tok = mqtt.connect(paho_mqtt::ConnectOptions::new());
smol::block_on(tok)?; smol::block_on(tok)?;