Skip to content

Commit 56ce8c2

Browse files
Merge pull request #307752 from MicrosoftDocs/main
Auto Publish – main to live - 2025-11-04 18:00 UTC
2 parents e78b732 + ad1b2a9 commit 56ce8c2

27 files changed

+170
-188
lines changed

articles/app-service/app-service-hybrid-connections.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ In addition to there being an App Service plan SKU requirement, there's an extra
138138

139139
The Hybrid Connections feature requires a relay agent in the network that hosts your Hybrid Connection endpoint. That relay agent is called the Hybrid Connection Manager (HCM). To download the Hybrid Connection Manager, follow the instructions for your client.
140140

141-
This tool runs on both Windows and Linux. On Windows, the Hybrid Connection Manager requires Windows Server 2012 and later. The Hybrid Connection Manager runs as a service and connects outbound to Azure Relay on port 443.
141+
This tool runs on both Windows and Linux. The Hybrid Connection Manager runs as a service and connects outbound to Azure Relay on port 443. On Windows, the current version requires Windows Server 2012 or later, but only supports the CLI interface on Windows Server 2012 (the GUI requires Windows Server 2016 or later). A legacy version that supports the GUI on Windows Server 2012 is available but not recommended - see the note in the troubleshooting section for details.
142142

143143
> [!NOTE]
144144
> As of October 20, 2025, [Azure Service Bus no longer supports TLS 1.0 and TLS 1.1][ServiceBus]. The minimum TLS version is now 1.2 for all Service Bus deployments. Hybrid Connections use Service Bus for connectivity. App Service Hybrid Connection Manager version 0.7.7 and later supports TLS 1.2. If you are on a previous version, **you must update to the new version of the Hybrid Connection Manager as soon as possible to prevent service disruption.**

articles/azure-resource-manager/management/azure-services-resource-providers.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,12 +197,13 @@ The resource providers for IoT services are:
197197

198198
| Resource provider namespace | Azure service |
199199
| --------------------------- | ------------- |
200+
| Microsoft.IoTOperations | [Azure IoT Operations](../../iot-operations/index.yml) |
201+
| Microsoft.DeviceRegistry | [Azure Device Registry](../../iot-operations/overview-iot-operations.md#manage-devices-and-assets) |
200202
| Microsoft.Devices | [Azure IoT Hub](../../iot-hub/index.yml)<br />[Azure IoT Hub Device Provisioning Service](../../iot-dps/index.yml) |
201203
| Microsoft.DeviceUpdate | [Device Update for IoT Hub](../../iot-hub-device-update/index.yml) |
202204
| Microsoft.DigitalTwins | [Azure Digital Twins](../../digital-twins/overview.md) |
203-
| Microsoft.IoTCentral | [Azure IoT Central](../../iot-central/index.yml) |
204205
| Microsoft.IoTSpaces | [Azure Digital Twins](../../digital-twins/index.yml) |
205-
| Microsoft.TimeSeriesInsights | [Azure Time Series Insights](../../time-series-insights/index.yml) |
206+
| Microsoft.IoTCentral | [Azure IoT Central](../../iot-central/index.yml) |
206207
| Microsoft.WindowsIoT | [Windows 10 IoT Core Services](/windows-hardware/manufacture/iot/iotcoreservicesoverview) |
207208

208209
## Management resource providers

articles/container-apps/scale-app.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ You can create a custom Container Apps scaling rule based on any [ScaledObject](
323323
| Cool down period | 300 |
324324

325325
> [!NOTE]
326-
> Cool down period only takes effect when scaling from in from the final replica in to 0. The cool down period does not affect scaling as any other replicas are removed.
326+
> Cool down period only takes effect when scaling in from the final replica to 0. The cool down period does not affect scaling as any other replicas are removed.
327327
328328
For [event-driven Container Apps jobs](jobs.md#event-driven-jobs), you can create a custom scaling rule based on any [ScaledJob](https://keda.sh/docs/latest/concepts/scaling-jobs/)-based KEDA scalers.
329329

articles/iot-operations/develop-edge-apps/overview-edge-apps.md

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ When a subscriber application sends an acknowledgment for a QoS-1 message, it ta
3535

3636
## Message retention and broker behavior
3737

38-
The broker retains messages until it receives an acknowledgment from a subscriber, ensuring zero message loss. This behavior guarantees that even if a subscriber application crashes or loses connectivity temporarily, messages won't be lost and can be processed once the application reconnects. MQTT broker messages might expire if configured by the [Message-Expiry-Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901112) and a subscriber didn't consume the message.
38+
The broker retains messages until it receives an acknowledgment from a subscriber, ensuring zero message loss. This behavior guarantees that even if a subscriber application crashes or loses connectivity temporarily, messages aren't lost and can be processed once the application reconnects. MQTT broker messages might expire if configured by the [Message-Expiry-Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901112) and a subscriber didn't consume the message.
3939

4040
## Retained messages
4141

@@ -55,34 +55,23 @@ MQTT subscriptions with QoS-1 ensure eventual consistency across identical appli
5555

5656
## State store
5757

58-
State store is a replicated in-memory *HashMap* for managing application processing state. Unlike *etcd*, for example, state store prioritizes high-velocity throughput, horizontal scaling, and low latency through in-memory data structures, partitioning, and chain-replication. It allows applications to use the state stores distributed nature and fault tolerance while accessing a consistent state quickly across instances. To use the built-in key-value store provided by the distributed broker:
58+
State store is a replicated in-memory *HashMap* for managing application processing state. Unlike *etcd*, for example, state store prioritizes high-velocity throughput, horizontal scaling, and low latency through in-memory data structures, partitioning, and chain-replication. It allows applications to use the state stores distributed nature and fault tolerance while accessing a consistent state quickly across instances. To use the built-in key-value store, provided by the distributed broker:
5959

60-
* Implement ephemeral storage and retrieval operations using the broker's key-value store API, ensuring proper error handling and data consistency. Ephemeral state is a short-lived data storage used in stateful processing for fast access to intermediate results or metadata during real-time computations. In the context of HA application, an ephemeral state helps recover application states between crashes. It can be written to disk but remains temporary, as opposed to cold storage that's designed for long-term storage of infrequently accessed data.
60+
* Implement ephemeral storage and retrieval operations using the broker's key-value store API, ensuring proper error handling and data consistency. Ephemeral state is a short-lived data storage used in stateful processing for fast access to intermediate results or metadata during real-time computations. In the context of HA application, an ephemeral state helps recover application states between crashes. It can be written to disk but remains temporary, as opposed to cold storage that is designed for long-term storage of infrequently accessed data.
6161

6262
* Use the state store for sharing state, caching, configuration, or other essential data among multiple instances of the application, allowing them to keep a consistent view of the data.
6363

64-
## Use MQTT broker's built-in Dapr integration
65-
66-
For simpler use cases an application might utilize [Dapr](https://dapr.io) (Distributed Application Runtime). Dapr is an open-source, portable, event-driven runtime that simplifies building microservices and distributed applications. It offers a set of building blocks, such as service-to-service invocation, state management, and publish/subscribe messaging.
67-
68-
[Dapr is offered as part of MQTT broker](howto-develop-dapr-apps.md), abstracting away details of MQTT session management, message QoS and acknowledgment, and built-in key-value stores, making it a practical choice for developing a highly available application for simple use cases by:
69-
70-
* Design your application using Dapr's building blocks, such as state management for handling the key-value store, and publish/subscribe messaging for interacting with the MQTT broker. If the use case requires building blocks and abstractions that aren't supported by Dapr, consider using the before mentioned MQTT broker features.
71-
72-
* Implement the application using your preferred programming language and framework, leveraging Dapr SDKs or APIs for seamless integration with the broker and the key-value store.
73-
7464
## Checklist to develop a highly available application
7565

7666
* Choose an appropriate MQTT client library for your programming language. The client should support MQTT v5. Use a C or Rust based library if your application is sensitive to latency.
7767
* Configure the client library to connect to MQTT broker with *clean-session* flag set to `false` and the desired QoS level (QoS-1).
7868
* Decide a suitable value for session expiry, message expiry, and keep-alive intervals.
79-
* Implement the message processing logic for the subscriber application, including sending an acknowledgment when the message has been successfully delivered or processed.
69+
* Implement the message processing logic for the subscriber application, including sending an acknowledgment when the message is successfully delivered or processed.
8070
* For multithreaded applications, configure the *max-receive* parameter to enable parallel message processing.
8171
* Utilize retained messages for keeping temporary application state.
8272
* Utilize the distributed state store to manage ephemeral application state.
83-
* Evaluate Dapr to develop your application if your use case is simple and doesn't require detailed control over the MQTT connection or message handling.
8473
* Implement shared subscriptions to distribute messages evenly among multiple instances of the application, allowing for efficient scaling.
8574

8675
## Related content
8776

88-
- [Use Dapr to develop distributed application workloads](howto-develop-dapr-apps.md)
77+
- [Data persistence in the MQTT broker state store](overview-state-store.md)

articles/iot-operations/develop-edge-apps/overview-iot-operations-sdks.md

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -34,25 +34,20 @@ The SDKs are open source and available on GitHub:
3434
> Azure IoT Operations SDKs is currently in PREVIEW.
3535
> The assets in the [Azure IoT Operations SDKs GitHub repository](https://github.com/Azure/iot-operations-sdks) are available for early access and feedback purposes.
3636
37-
## Goal of the SDKs
37+
## Benefits of the SDKs
3838

39-
The goal of the SDKs is to provide an application framework to abstract the MQTT concepts, with a clean API that let you use the *Protocol Compiler (codegen)*, to generate code from [Digital Twins Definition Language (DTDL)](https://github.com/Azure/opendigitaltwins-dtdl/blob/master/README.md) models in the supported programming languages.
39+
Compared to using an MQTT client directly, the SDKs provide an application framework that abstracts MQTT concepts, exposes a clean API surface, and supports the *Protocol Compiler (codegen)* to generate client and server code from [Digital Twins Definition Language (DTDL)](https://github.com/Azure/opendigitaltwins-dtdl/blob/master/README.md) models. The SDKs can be used to build highly available applications at the edge, that interact with Azure IoT Operations to perform operations such as **asset discovery**, **protocol translation** and **data transformation**.
4040

41-
The SDKs can be used to build highly available applications at the edge, that interact with Azure IoT Operations to perform operations such as **asset discovery**, **protocol translation** and **data transformation**.
41+
The key benefits of using the SDKs include:
4242

43-
## Benefits of using the SDKs
43+
- **Connectivity**: Maintain a secure connection to the MQTT Broker, including rotating server certificates and authentication keys.
44+
- **Security**: Support SAT or X.509 certificate authentication with credential rotation.
45+
- **Configuration**: Configure the MQTT Broker connection through the file system, environment, or connection string.
46+
- **Services**: Provides client libraries to Azure IoT Operations services for simplified development.
47+
- **Protocol Compiler (codegen)**: Provides contract guarantees between client and servers via RPC and Telemetry.
48+
- **High availability**: Building blocks for building highly available apps via state store and lease lock.
49+
- **Payload formats**: Supports multiple serialization formats, built in when using codegen.
4450

45-
The SDKs provide many benefits compared to using the MQTT client directly:
46-
47-
| Feature | Benefit |
48-
|-|-|
49-
| **Connectivity** | Maintain a secure connection to the MQTT Broker, including rotating server certificates and authentication keys. |
50-
| **Security** | Support SAT or X.509 certificate authentication with credential rotation. |
51-
| **Configuration** | Configure the MQTT Broker connection through the file system, environment, or connection string. |
52-
| **Services** | Provides client libraries to Azure IoT Operations services for simplified development. |
53-
| **Protocol Compiler (codegen)** | Provides contract guarantees between client and servers via RPC and Telemetry. |
54-
| **High availability** | Building blocks for building highly available apps via state store, lease lock, and leader election clients. |
55-
| **Payload formats** | Supports multiple serialization formats, built in. |
5651

5752
## Components of the SDKs
5853

@@ -62,7 +57,7 @@ The SDKs provide many components available for simplicity and ease of use:
6257

6358
* A set of protocol primitives, designed to help creating applications, built on the fundamental protocol implementations: **Commands** and **Telemetry**.
6459

65-
* A set of clients providing integration with Azure IoT Operations services such as **state store**, **leader election**, **lease lock**, and **schema registry**.
60+
* A set of clients providing integration with Azure IoT Operations services such as **state store**, **lease lock**, **Azure Device Registry**, and **schema registry**.
6661

6762
* A **Protocol Compiler (codegen)**, that allows clients and servers to communicate via a schema contract. First describe the communication (using **Telemetry** and **Commands**) with DTDL, then generate a set of client libraries and server library stubs across the supported programming languages.
6863

@@ -77,10 +72,7 @@ The SDKs supports the following application types:
7772
| Application type | Description |
7873
|-|-|
7974
| [Edge application](https://github.com/Azure/iot-operations-sdks/blob/main/doc/edge_application/README.md) | Generic edge applications that need to interface with various Azure IoT Operations services such as the MQTT broker and state store. The SDKs provide convenient clients to simplify the development experience. </br></br>*An Edge application is a customer managed artifact, including deployment to the cluster and monitoring execution.* |
80-
| [Akri connector](../discover-manage-assets/overview-akri.md#connectors)</br>*(in development)*| Specialized edge applications deployed by the _Akri operator_ service and designed to interface with on-premises devices. An Akri connector is responsible for discovering assets available via the endpoint, and relaying information to and from those assets. </br></br>*An Akri connector's deployment is managed automatically by the Akri operator service.* |
81-
82-
> [!NOTE]
83-
> Akri connectors are part of the [Akri services (preview)](../discover-manage-assets/overview-akri.md), which is under active development and will be available soon.
75+
| [Akri connector](../discover-manage-assets/overview-akri.md#connectors)| Specialized edge applications deployed by the _Akri operator_ service and designed to interface with on-premises devices. An Akri connector is responsible for securing connections to southbound devices and assets using their native protocols, sending telemetry and data to upstream Azure IoT Operations components, and optionally detecting assets for onboarding into Azure Device Registry. </br></br>*An Akri connector's deployment is managed automatically by the Akri operator service.* |
8476

8577
## Samples and tutorials
8678

@@ -94,4 +86,4 @@ For documentation related to the implementation of the SDKs, it's fundamentals p
9486

9587
## Next step
9688

97-
Try the [Quickstart: Start developing with the Azure IoT Operations SDKs (preview)](quickstart-get-started-sdks.md)
89+
Try the [Quickstart: Start developing with the Azure IoT Operations SDKs (preview)](quickstart-get-started-sdks.md)

articles/iot-operations/develop-edge-apps/quickstart-get-started-sdks.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,6 @@ Developing with the Azure IoT Operations SDKs requires a Kubernetes cluster with
3232
3333
### [Codespaces](#tab/codespaces)
3434

35-
> [!CAUTION]
36-
> We're currently experiencing container corruption with Azure IoT Operations deployed in a codespace, so we don't recommend this path until we resolve the issue with the GitHub team.
37-
3835
GitHub Codespaces provides the most streamlined experience and can get the development environment up and running in a couple of minutes.
3936

4037
1. Create a **codespace** in GitHub Codespaces from the *Azure IoT Operations SDKs* repository:
Binary file not shown.
-7.44 KB
Loading
-25.3 KB
Loading
13.5 KB
Loading

0 commit comments

Comments
 (0)