You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/app-service/app-service-hybrid-connections.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -138,7 +138,7 @@ In addition to there being an App Service plan SKU requirement, there's an extra
138
138
139
139
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.
140
140
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.
142
142
143
143
> [!NOTE]
144
144
> 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.**
Copy file name to clipboardExpand all lines: articles/container-apps/scale-app.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -323,7 +323,7 @@ You can create a custom Container Apps scaling rule based on any [ScaledObject](
323
323
| Cool down period | 300 |
324
324
325
325
> [!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.
327
327
328
328
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.
Copy file name to clipboardExpand all lines: articles/iot-operations/develop-edge-apps/overview-edge-apps.md
+5-16Lines changed: 5 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -35,7 +35,7 @@ When a subscriber application sends an acknowledgment for a QoS-1 message, it ta
35
35
36
36
## Message retention and broker behavior
37
37
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.
39
39
40
40
## Retained messages
41
41
@@ -55,34 +55,23 @@ MQTT subscriptions with QoS-1 ensure eventual consistency across identical appli
55
55
56
56
## State store
57
57
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:
59
59
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.
61
61
62
62
* 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.
63
63
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
-
74
64
## Checklist to develop a highly available application
75
65
76
66
* 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.
77
67
* Configure the client library to connect to MQTT broker with *clean-session* flag set to `false` and the desired QoS level (QoS-1).
78
68
* 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.
80
70
* For multithreaded applications, configure the *max-receive* parameter to enable parallel message processing.
81
71
* Utilize retained messages for keeping temporary application state.
82
72
* 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.
84
73
* Implement shared subscriptions to distribute messages evenly among multiple instances of the application, allowing for efficient scaling.
85
74
86
75
## Related content
87
76
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)
Copy file name to clipboardExpand all lines: articles/iot-operations/develop-edge-apps/overview-iot-operations-sdks.md
+13-21Lines changed: 13 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,25 +34,20 @@ The SDKs are open source and available on GitHub:
34
34
> Azure IoT Operations SDKs is currently in PREVIEW.
35
35
> 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.
36
36
37
-
## Goal of the SDKs
37
+
## Benefits of the SDKs
38
38
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**.
40
40
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:
42
42
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.
44
50
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. |
56
51
57
52
## Components of the SDKs
58
53
@@ -62,7 +57,7 @@ The SDKs provide many components available for simplicity and ease of use:
62
57
63
58
* A set of protocol primitives, designed to help creating applications, built on the fundamental protocol implementations: **Commands** and **Telemetry**.
64
59
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**.
66
61
67
62
* 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.
68
63
@@ -77,10 +72,7 @@ The SDKs supports the following application types:
77
72
| Application type | Description |
78
73
|-|-|
79
74
|[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.*|
84
76
85
77
## Samples and tutorials
86
78
@@ -94,4 +86,4 @@ For documentation related to the implementation of the SDKs, it's fundamentals p
94
86
95
87
## Next step
96
88
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)
Copy file name to clipboardExpand all lines: articles/iot-operations/develop-edge-apps/quickstart-get-started-sdks.md
-3Lines changed: 0 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -32,9 +32,6 @@ Developing with the Azure IoT Operations SDKs requires a Kubernetes cluster with
32
32
33
33
### [Codespaces](#tab/codespaces)
34
34
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
-
38
35
GitHub Codespaces provides the most streamlined experience and can get the development environment up and running in a couple of minutes.
39
36
40
37
1. Create a **codespace** in GitHub Codespaces from the *Azure IoT Operations SDKs* repository:
0 commit comments