Q:

Not getting all notifications when subscribed

I am only receiving Reconnection/Disconnection notifications when trying to talk between two programs 

My first program is Publishing/Subscribing like in the doc example of rumqtt and the other is simply subscribing. I tested my first program with MQTT.fx and when I subscribe on "Test" with MQTT.fx, I receive what I publish from my first program. On the second program, when I publish from MQTT.fx, I receive what I published from there. The problem is that my programs don't do that to each other.
The code for my first program which serializes my toml file to a MessagePack and publishes it is (Edited to be more reproduce-able):
// Create server for testing
let mqtt_options = MqttOptions::new("Test", SERVER_IP, SERVER_PORT);
let (mut mqtt_client, notifications) = MqttClient::start(mqtt_options).unwrap();

// Subscribe and Publish
mqtt_client.subscribe("Test", QoS::AtLeastOnce).unwrap();
let payload = format!("Hello, World!");
mqtt_client.publish("Test", QoS::AtLeastOnce, false, payload).unwrap();

// Receive confirmation of Publish
for notification in notifications {
     println!("{:?}", notification)
}

The code I wrote for my client that simply subscribes is this (Edited to be more reproduce-able):
// Get server settings
let mqtt_options = MqttOptions::new("Test", SERVER_IP, SERVER_PORT);
let (mut mqtt_client, notifications) = MqttClient::start(mqtt_options).unwrap();

// Subscribe to "broker"? to receive publishes
mqtt_client.subscribe("Test", QoS::AtLeastOnce).unwrap();

// Parse notifications
for notification in notifications {
    match notification {
        Notification::Publish(publish) => println!("Received publish! {:?}",
        _ => println!("Received something that's not a publish! {:?}", notification)
    }
}

I have tried many of the examples I found online, but many of them did not work or the imports did not exist anymore. I believe I am either making a silly mistake or missing a fundamental part in receiving messages.
For clarification here is what I receive on MQTT.fx from my first program (example snippit):

I am new in both MQTT and Rust so my implementation is definitely not textbook.
To to reproduce: Put both in a main function with imports and run a local server like mosquitto (https://mosquitto.org/download/) with ip:127.0.0.1 and port: 1883. Run program 2 first, then program 1 to send publish.
[dependencies]
rumqtt = "0.31"
Libraries:

MQTT library is rumqtt

A:

Assuming "Test" is the client id in the following line:
let mqtt_options = MqttOptions::new("Test", SERVER_IP, SERVER_PORT);

Then the problem is that client IDs need to be globally unique for any given broker. Having 2 clients with the same client ID means the broker will kick the oldest one off when the second connects. When disconnected, the first client will likely try and reconnect and hence kick the other client off. This leads to a reconnect/disconnect storm with only one client ever connected for what ever the reconnect back off time is.
Change the client ID for one of the two clients.

