An Azure service that enables bidirectional communication between internet of things (IoT) devices and applications.
Hello @Anonymous ,
The Azure IoT Hub is a perfect (public) cloud gateway to connect devices to for D2C messages if you want to have every device using its own credentials. The IoT Hub also offers C2D communication. Another important feature is conditional routing.
The Azure IoT Hub guarantees at least once delivery of incoming messages:
IoT Hub implements at least once delivery guarantees for both device-to-cloud and cloud-to-device messaging.
The Azure IoT Hub guarantees delivery messages to all its endpoints, without duplicates through duplicate routing:
Each message is routed to all endpoints whose routing queries it matches. In other words, a message can be routed to multiple endpoints. If a message matches multiple routes that point to the same endpoint, IoT Hub delivers the message to that endpoint only once.
According to this, the reliability is shifted towards the receiving solution.
I'm not sure what the need is for an (extra) Kafka resource.
It's a common pattern to use IoTHub -> Azure Function -> DB
You could add an extra EventHub (IoTHub -> Event Hub -> Azure Function -> DB) which gives you more control eg:
- listen to the event hub to see what messages are passed to the function
- Temporarily stop the egress of the event hub for whatever reason
- Adding archive functionality to the Event Hub
If the Azure Function is stopped, the ingest will pause. Next time the Azure Function starts, it will proceed with the next, not yet received, message.
Please try out these patterns first en see what fits best to your situation.
If the response helped, do "Accept Answer". If it doesn't work, please let us know the progress. All community members with similar issues will benefit by doing so. Your contribution is highly appreciated.