Apr 26, 2021 — Global real-time scale, performance and stability updates
IoT Edge Connect has been updated to help support global real-time scale, performance and stability to meet the requirements of customers moving forward. The updates include:
Updated session takeover behavior
The session connection behavior now allows clients with duplicate credentials to connect to the broker. A client can connect to the service only if the client ID and credentials are valid and signed with the requisite key.
When two publishers connect with the same client ID within different network segments, the previous client is not disconnected as before. Both publish without issues, and the subscribers receive messages from both publishers.
When two subscribers connect with the same client ID, the previous client will be disconnected, when the same broker is involved. In case of two different broker nodes, both will continue to operate without issues. Both clients will receive messages depending on their respective subscriptions.
We recommend that you ensure clients do not connect with duplicate client IDs and credentials to avoid connection issues.
QoS 2 support deprecated
Message publication and subscription at QoS level 2 is no longer available, as the extra overhead for message flows increased latency. We recommend using QoS 1 message semantics for reliable messaging flow between devices and applications.
When a client attempts a QoS 2 subscription, the request will succeed, and the service will respond with a maximum indicated QoS 1 level. Messages will be delivered at QoS 1 and QoS 0. If a client attempts to publish at QoS 2 level the request will trigger the connection to be closed.
QoS 0 messages removed
QoS 0 messages will no longer be available via the message stream REST API. This is to ensure that the reliable messages at QoS 1 can come first over unreliable messages when being ingested into a cloud application.
ACL violations no longer reported by connection monitoring
ACL violations at the edge will no longer be forwarded to the connection monitoring log. This ensures that a poorly or maliciously configured client can not execute a resource starvation attack on the backend services of IoT Edge Connect. We recommend that you ensure credentials match ACLs and enhance client debug to detect misconfigured devices at source.
Duplicate QoS 1 messages
Whenever the broker sends a duplicate message to a QoS1 topic subscriber, the DUP flag might not be set for the duplicate messages as a requirement in the MQTT Publish packet. As a result, they might be treated as two separate messages. To work around this issue, you can use an application-level sequence ID embedded in the payload to deduplicate the received messages.
Performance best practices:
To avoid message loss, high latency or connectivity issues, we recommend that the total messages limit for one subscriber across all topics should not exceed 50 messages per second. For instance, if you subscribe to three topics with three separate publishers for these topics, the publishing rate for each could be 20 messages, 15 messages and 10 messages per second respectively.