Способ Azure IoT Edge Python SDK, заставляющий вас обрабатывать сообщения, не выглядит отказоустойчивым.
while True:
input_message = await module_client.receive_message_on_input("input1")
# do some work here
# fail <<<<
# do some work here
Если в середине произойдет сбой, сообщение не будет «отправлено» вам снова, когда IoT Edge Module исправлен.
Я прав?
. NET SDK заставляет вас использовать другой способ, вы не несете ответственности за выбор сообщений из «очереди» вместо этого вы определяете обратный вызов и регистрируете его для вызова при поступлении нового сообщения, и он ожидает, что обратный вызов возвратит сообщение о состоянии, например, Завершено (если сообщение было успешно обработано). Таким образом, если это не удается в середине, обратный вызов получит его снова. Так что это отказоустойчиво и такие вещи, как исключения, перезапуски устройства покрыты этим поведением.