An Azure event routing service designed for high availability, consistent performance, and dynamic scale.
The described behavior indicates that publish and subscribe operations are succeeding, but the broker isn’t matching those operations for delivery. In Azure Event Grid MQTT broker this is almost always caused by access control or topic-space configuration, not by an additional routing step.
Based on the documented troubleshooting guidance, the following areas must be verified in this order:
- Client group membership and permissions
- Ensure the subscriber client (
MQTT-LOCAL1-PROD) is actually in thetest-subscribersclient group and the publisher (MQTT-CONTROL-PROD) is intest-publishers. - Confirm that the permission bindings grant publish permission for
test-publishersand subscribe permission fortest-subscriberson the same topic space. If the client group or topic space names differ even slightly from what’s used in bindings, messages won’t be delivered even though publishes and subscribes succeed. - If the client disconnects when publishing, or if the topic doesn’t exist in the configured topic space, the broker can drop messages. Verify that the topics
test/1,test/2, … are actually covered by the topic space bound totest-publishersandtest-subscribers.
- Ensure the subscriber client (
- Topic space coverage of subscriptions
- The broker only delivers messages when the subscribed topics are included in the topic space to which the client has subscribe access. Ensure that the subscription filters (for example
test/1) are within the topic templates configured in thetesttopic space. - If the subscriber is using patterns like
test/#ortest/+, verify that these patterns are allowed by the topic space configuration and not filtered out.
- The broker only delivers messages when the subscribed topics are included in the topic space to which the client has subscribe access. Ensure that the subscription filters (for example
- Message size and expiry
- If a maximum message size is configured, messages larger than this limit can be rejected for delivery while still counting as successful publishes. Verify that the payload size is within the configured limits.
- If a message expiry interval is configured and is too short relative to the subscriber’s connectivity pattern, messages can expire before being delivered.
- QoS and acknowledgments
- Use QoS 1 to have the service guarantee at-least-once delivery.
- Ensure the subscriber acknowledges messages. If acknowledgments aren’t received, the service stops sending messages to that client after 16 unacknowledged messages, which results in zero delivered messages despite successful publishes.
- Routing to endpoints (if applicable)
- If MQTT messages are also being routed to Event Grid topics or other endpoints, verify that the Data Sender role is enabled on the routing topic and that CloudEvent schema v1.0 is used. Misconfigured routing can cause messages not to appear at downstream endpoints even though they are published successfully.
- Namespace and client lifecycle
- Confirm the namespace is healthy and available in the region.
- Configure MQTT client life-cycle events to capture disconnect reasons and verify that clients remain connected during publish/subscribe operations.
If, after validating:
- client group membership,
- permission bindings,
- topic space coverage,
- message size/expiry,
- QoS and acknowledgments,
there are still zero “Successful Delivered Messages” while “Successful Published Messages” and “Successful Subscription Operations” continue to increase, this indicates a service-side issue. In that case, capture metrics and logs and open a support ticket so the Event Grid team can inspect the namespace state.
References: