Skip to content

Commit 654014b

Browse files
Merge pull request #312055 from MicrosoftDocs/main
Auto Publish – main to live - 2026-02-20 06:00 UTC
2 parents bec5269 + 7db67e2 commit 654014b

26 files changed

Lines changed: 915 additions & 438 deletions

articles/application-gateway/application-gateway-private-deployment.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ Application Gateway v2 can now address each of these items to further eliminate
3232
* Ability to override the default route to the Internet (0.0.0.0/0)
3333
* DNS resolution via defined resolvers on the virtual network [Learn more](../virtual-network/manage-virtual-network.yml#change-dns-servers), including private link private DNS zones.
3434

35+
>[!Tip]
36+
> See [Application Gateway DNS resolution](application-gateway-dns-resolution.md) for detailed guidance on configuring DNS for Application Gateway.
37+
3538
Each of these features can be configured independently. For example, a public IP address can be used to allow traffic inbound from the Internet and you can define a **_Deny All_** outbound rule in the network security group configuration to prevent data exfiltration.
3639

3740
## Onboard to the feature

articles/azure-government/documentation-government-product-roadmap.md

Lines changed: 14 additions & 14 deletions
Large diffs are not rendered by default.

articles/azure-vmware/includes/disk-capabilities-of-the-host.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ Azure VMware Solution clusters are based on a hyperconverged infrastructure. The
1616

1717
| Host type | CPU (cores/GHz) | RAM (GB) | vSAN Architecture| vSAN cache tier (TB, raw***) | vSAN capacity tier (TB, raw***) | Regional availability |
1818
| :--- | :---: | :---: | :---: | :---: | :---: | :---:|
19-
| AV36 | Intel Xeon Scalable processors (Skylake generation), 36 cores | 576 | OSA | 3.2 (NVMe) | 15.20 (SSD) | Selected regions (*) |
20-
| AV36P | Intel Xeon Scalable processors (Cascade Lake generation), 36 cores | 768 | OSA | 1.5 (Intel Cache) | 19.20 (NVMe) | Selected regions (*) |
21-
| AV48 | Intel Xeon Scalable processors (Sapphire Rapids generation), 48 cores| 1,024 | ESA | N/A | 25.6 (NVMe) | Selected regions (*) |
22-
| AV52 | Intel Xeon Scalable processors (Cascade Lake generation), 52 cores | 1,536 | OSA | 1.5 (Intel Cache) | 38.40 (NVMe) | Selected regions (*) |
23-
| AV64 | Intel Xeon Scalable processors (Ice Lake generation), 64 cores | 1,024 | OSA / ESA****| 3.84 (NVMe) / N/A | 15.36 (NVMe) / 19.25 (NVMe)| Selected regions (**) |
19+
| AV36 | Dual Intel Xeon Gold 6140 CPUs (Skylake microarchitecture) with 18 cores/CPU @ 2.3 GHz, Total 36 physical cores (72 logical cores with hyperthreading) | 576 | OSA | 3.2 (NVMe) | 15.20 (SSD) | Selected regions (*) |
20+
| AV36P | Dual Intel Xeon Gold 6240 CPUs (Cascade Lake microarchitecture) with 18 cores/CPU @ 2.6 GHz / 3.9 GHz Turbo, Total 36 physical cores (72 logical cores with hyperthreading) | 768 | OSA | 1.5 (Intel Cache) | 19.20 (NVMe) | Selected regions (*) |
21+
| AV48 | Dual Intel Xeon Gold 6442Y CPUs (Sapphire Rapids microarchitecture) with 24 cores/CPU @ 2.6 GHz / 4.0 GHz Turbo, Total 48 physical cores (96 logical cores with hyperthreading) | 1,024 | ESA | N/A | 25.6 (NVMe) | Selected regions (*) |
22+
| AV52 | Dual Intel Xeon Platinum 8270 CPUs (Cascade Lake microarchitecture) with 26 cores/CPU @ 2.7 GHz / 4.0 GHz Turbo, Total 52 physical cores (104 logical cores with hyperthreading) | 1,536 | OSA | 1.5 (Intel Cache) | 38.40 (NVMe) | Selected regions (*) |
23+
| AV64 | Dual Intel Xeon Platinum 8370C CPUs (Ice Lake microarchitecture) with 32 cores/CPU @ 2.8 GHz / 3.5 GHz Turbo, Total 64 physical cores (128 logical cores with hyperthreading) | 1,024 | OSA | 3.84 (NVMe) | 15.36 (NVMe) | Selected regions (**) |
2424

2525
An Azure VMware Solution cluster requires a minimum number of three hosts. You can use hosts of the same type only in a single Azure VMware Solution private cloud. Hosts used to build or scale clusters come from an isolated pool of hosts. Those hosts passed hardware tests and had all data securely deleted before being added to a cluster.
2626

@@ -31,5 +31,3 @@ All of the preceding host types have 100-Gbps network interface throughput.
3131
**AV64 prerequisite: An Azure VMware Solution private cloud deployed with AV36, AV36P, or AV52 is required before adding AV64.
3232

3333
***Raw is based on [International Standard of Units (SI)](https://en.wikipedia.org/wiki/International_System_of_Units) reported by disk manufacturers. Example: 1 TB Raw = 1000000000000 bytes. Space calculated by a computer in binary (1 TB binary = 1099511627776 bytes binary) equals 931.3 gigabytes converted from the raw decimal.
34-
35-
***ESA with AV64 only applies to Gen 2 deployments

articles/iot-edge/development-environment.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ The Azure IoT Edge extension for Visual Studio Code provides IoT Edge module tem
5252
5353
For more information and to download, see [Azure IoT Edge for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=vsciot-vscode.azure-iot-edge).
5454

55-
In addition to the IoT Edge extensions, you might find it helpful to install other extensions for developing. For example, you can use [Docker for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=PeterJausovec.vscode-docker) to manage your images, containers, and registries. Additionally, all the major supported languages have extensions for Visual Studio Code that can help when you're developing modules.
55+
In addition to the IoT Edge extensions, you might find it helpful to install other extensions for developing. For example, you can use [Docker for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker) to manage your images, containers, and registries. Additionally, all the major supported languages have extensions for Visual Studio Code that can help when you're developing modules.
5656

5757
The [Azure IoT Hub](https://marketplace.visualstudio.com/items?itemName=vsciot-vscode.azure-iot-toolkit) extension is useful as a companion for the Azure IoT Edge extension.
5858

articles/iot-edge/how-to-deploy-modules-portal.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,6 @@ Review your deployment information, then select **Create**.
110110

111111
Once you deploy modules to your device, you can view all of them in the device details page of your IoT hub. This page displays the name of each deployed module, and useful information like the deployment status and exit code.
112112

113-
Select **Next: Routes** and continue with deployment as described by [Specify routes](#specify-routes) and [Review deployment](#review-deployment) earlier in this article.
114-
115113
## Next steps
116114

117115
Learn how to [Deploy IoT Edge modules at scale using the Azure portal](how-to-deploy-at-scale.md).

articles/iot-edge/tutorial-monitor-with-workbooks.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ Follow these steps to deploy and configure the collector module:
7474

7575
1. Sign in to the [Azure portal](https://portal.azure.com), then go to your IoT hub.
7676

77-
1.Under **Device management**, select **Devices**.
77+
1. Under **Device management**, select **Devices**.
7878

7979
1. Select the device ID of the target device in the list of IoT Edge devices to open the device details page.
8080

articles/iot-hub/iot-hub-devguide-endpoints.md

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ author: cwatson-cat
55
ms.author: cwatson
66
ms.service: azure-iot-hub
77
ms.topic: concept-article
8-
ms.date: 12/03/2024
8+
ms.date: 02/19/2026
9+
ai-usage: ai-assisted
910
ms.custom: [amqp, mqtt, 'Role: Cloud Development', 'Role: System Architecture']
1011
---
1112

@@ -17,7 +18,7 @@ Azure IoT Hub exposes various endpoints to support the devices and services that
1718

1819
## IoT Hub names
1920

20-
You can find the hostname of an IoT hub in the Azure portal, on your IoT hub's **Overview** working pane. By default, the DNS name of an IoT hub looks like the following example:
21+
You can find the hostname of an IoT hub in the Azure portal, on your IoT hub's **Overview** pane. By default, the DNS name of an IoT hub looks like the following example:
2122

2223
`{your iot hub name}.azure-devices.net`
2324

@@ -61,7 +62,7 @@ The following list describes the endpoints:
6162

6263
The [Azure IoT Hub SDKs](iot-hub-devguide-sdks.md) article describes the various ways to access these endpoints.
6364

64-
All IoT Hub endpoints use the [TLS](https://tools.ietf.org/html/rfc5246) protocol, and no endpoint is ever exposed on unencrypted/unsecured channels.
65+
All IoT Hub endpoints use the [TLS](https://tools.ietf.org/html/rfc5246) protocol, and no endpoint is ever exposed on unencrypted or unsecured channels.
6566

6667

6768
## Custom endpoints for message routing
@@ -80,19 +81,25 @@ For the limits on endpoints per hub, see [Quotas and throttling](iot-hub-devguid
8081

8182
### Built-in endpoint
8283

83-
You can use standard [Event Hubs integration and SDKs](iot-hub-devguide-messages-read-builtin.md) to receive device-to-cloud messages from the built-in endpoint (**messages/events**). Once any route is created, data stops flowing to the built-in endpoint unless a route is created to the built-in endpoint. Even if no routes are created, a fallback route must be enabled to route messages to the built-in endpoint. The fallback is enabled by default if you create your hub using the portal or the CLI.
84+
You can use standard [Event Hubs integration and SDKs](iot-hub-devguide-messages-read-builtin.md) to receive device-to-cloud messages from the built-in endpoint (**messages/events**). Once you create any route, data stops flowing to the built-in endpoint unless a route is created to that endpoint. Even if you don't create any routes, you must enable a fallback route to route messages to the built-in endpoint. The fallback is enabled by default if you create your hub by using the portal or the CLI.
85+
86+
The message payload isn't base64 encoded at the built-in endpoint.
8487

8588
### Azure Storage as a routing endpoint
8689

87-
There are two storage services IoT Hub can route messages to: [Azure Blob Storage](../storage/blobs/storage-blobs-introduction.md) and [Azure Data Lake Storage Gen2](../storage/blobs/data-lake-storage-introduction.md) (ADLS Gen2) accounts. Both of these use blobs for their storage. To use Azure Data Lake Gen2, your storage account must have hierarchical namespaces enabled. For more information, see [Create a storage account to use with Azure Data Lake Storage](../storage/blobs/create-data-lake-storage-account.md).
90+
IoT Hub can route messages to two storage services: [Azure Blob Storage](../storage/blobs/storage-blobs-introduction.md) and [Azure Data Lake Storage Gen2](../storage/blobs/data-lake-storage-introduction.md) (ADLS Gen2) accounts. Both of these services use blobs for their storage. To use Azure Data Lake Gen2, your storage account must have hierarchical namespaces enabled. For more information, see [Create a storage account to use with Azure Data Lake Storage](../storage/blobs/create-data-lake-storage-account.md).
91+
92+
IoT Hub supports writing data to Azure Storage in the [Apache Avro](https://avro.apache.org/) format and the JSON format. The default format is Avro. To use JSON encoding, set the `contentType` property to **application/json** and the `contentEncoding` property to **UTF-8** in the message [system properties](iot-hub-devguide-routing-query-syntax.md#system-properties). Both of these values are case-insensitive.
93+
94+
If you don't set the necessary system properties, IoT Hub applies base64 encoding. To avoid base64 encoding, set both the `contentType` property to **application/json** and the `contentEncoding` property to **UTF-8** in the message system properties. If these properties aren't set, IoT Hub writes the messages in base64 encoded format.
8895

89-
IoT Hub supports writing data to Azure Storage in the [Apache Avro](https://avro.apache.org/) format and the JSON format. The default is AVRO. To use JSON encoding, set the contentType property to **application/json** and contentEncoding property to **UTF-8** in the message [system properties](iot-hub-devguide-routing-query-syntax.md#system-properties). Both of these values are case-insensitive. If the content encoding isn't set, then IoT Hub writes the messages in base 64 encoded format.
96+
You can set the encoding format only when you configure the blob storage endpoint. You can't edit the encoding format for an existing endpoint.
9097

91-
The encoding format can be set only when the blob storage endpoint is configured; it can't be edited for an existing endpoint.
98+
IoT Hub batches messages and writes data to storage whenever the batch reaches a certain size or a certain amount of time elapses. IoT Hub defaults to the following file naming convention: `{iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}`.
9299

93-
IoT Hub batches messages and writes data to storage whenever the batch reaches a certain size or a certain amount of time elapses. IoT Hub defaults to the following file naming convention: `{iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}`. You can use any file naming convention, but you must use all listed tokens. IoT Hub writes to an empty blob if there's no data to write.
100+
You can use any file naming convention, but you must use all listed tokens. IoT Hub writes to an empty blob if there's no data to write.
94101

95-
We recommend listing the blobs or files and then iterating over them, to ensure that all blobs or files are read without making any assumptions of partition. The partition range could potentially change during a Microsoft-initiated failover or IoT Hub manual failover. You can use the [List Blobs API](/rest/api/storageservices/list-blobs) to enumerate the list of blobs or [List ADLS Gen2 API](/rest/api/storageservices/datalakestoragegen2/path) for the list of files. For example:
102+
To ensure that all blobs or files are read without making any assumptions about partition, list the blobs or files and then iterate over them. The partition range could potentially change during a Microsoft-initiated failover or IoT Hub manual failover. You can use the [List Blobs API](/rest/api/storageservices/list-blobs) to enumerate the list of blobs or [List ADLS Gen2 API](/rest/api/storageservices/datalakestoragegen2/path) for the list of files. For example:
96103

97104
```csharp
98105
public void ListBlobsInContainer(string containerName, string iothub)
@@ -112,15 +119,21 @@ public void ListBlobsInContainer(string containerName, string iothub)
112119

113120
### Service Bus queues and Service Bus topics as a routing endpoint
114121

115-
Service Bus queues and topics used as IoT Hub endpoints must not have **Sessions** or **Duplicate Detection** enabled. If either of those options are enabled, the endpoint appears as **Unreachable** in the Azure portal.
122+
Service Bus queues and topics that you use as IoT Hub endpoints must not have **Sessions** or **Duplicate Detection** enabled. If you enable either of those options, the endpoint appears as **Unreachable** in the Azure portal.
123+
124+
Base64 encoding never happens when routing to Service Bus queues or topics. Messages are written as-is to the endpoint.
116125

117126
### Event Hubs as a routing endpoint
118127

119-
Apart from the built-in-Event Hubs compatible endpoint, you can also route data to custom endpoints of type Event Hubs.
128+
Apart from the built-in Event Hubs compatible endpoint, you can also route data to custom endpoints of type Event Hubs.
129+
130+
Base64 encoding never happens when routing to custom Event Hubs endpoints. Messages are written as-is to the endpoint.
120131

121132
### Azure Cosmos DB as a routing endpoint
122133

123-
You can send data directly to Azure Cosmos DB from IoT Hub. IoT Hub supports writing to Cosmos DB in JSON (if specified in the message content-type) or as base 64 encoded binary.
134+
You can send data directly to Azure Cosmos DB from IoT Hub. IoT Hub supports writing to Cosmos DB in JSON (if specified in the message content-type) or as base64 encoded binary.
135+
136+
Base64 encoding is applied if the necessary system properties aren't set. To write as JSON, set the `contentType` property to **application/json** and the `contentEncoding` property to **UTF-8** in the message system properties. If these properties aren't set, data is base64 encoded when written to Cosmos DB.
124137

125138
To support high-scale scenarios, you can enable [synthetic partition keys](/azure/cosmos-db/synthetic-partition-keys) for the Cosmos DB endpoint. As Cosmos DB is a hyperscale data store, all data/documents written to it must contain a field that represents a logical partition. Each logical partition has a maximum size of 20 GB. You can specify the partition key property name in **Partition key name**. The partition key property name is defined at the container level and can't be updated.
126139

articles/iot-hub/iot-hub-devguide-messages-c2d.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
title: Understand Azure IoT Hub cloud-to-device messaging
33
description: This developer guide discusses how to use cloud-to-device messaging with your IoT hub. It includes information about the message life cycle and configuration options.
44
author: cwatson-cat
5-
65
ms.author: cwatson
76
ms.service: azure-iot-hub
87
ms.topic: concept-article
9-
ms.date: 06/25/2025
8+
ms.date: 02/11/2026
109
ms.custom: mqtt, devx-track-azurecli
10+
ai-usage: ai-assisted
1111
---
1212

1313
# Understand cloud-to-device messaging from an IoT hub
@@ -43,7 +43,19 @@ A device can also:
4343

4444
A thread could fail to process a message without notifying the IoT hub. In this case, messages automatically transition from the *Invisible* state back to the *Enqueued* state after a visibility timeout (or lock timeout). The length of this timeout is one minute and can't be changed.
4545

46-
The **max delivery count** property on the IoT hub determines the maximum number of times a message can transition between the *Enqueued* and *Invisible* states. After that number of transitions, the IoT hub sets the state of the message to *Dead lettered*. Similarly, the IoT hub sets the state of a message to *Dead lettered* after its expiration time.
46+
The **max delivery count** property on the IoT hub applies only when a device explicitly abandons a message. Each explicit abandon transitions a message from *Invisible* back to *Enqueued* and increments the delivery count. If the lock expires, the message returns to *Enqueued* but the delivery count does not increment. After the delivery count reaches the max, the IoT hub sets the message state to *Dead lettered*. The IoT hub also sets a message to *Dead lettered* after its expiration time.
47+
48+
### Understanding delivery count behavior
49+
50+
IoT Hub increments the delivery count only when your device explicitly abandons a message. If a message lock expires without explicit completion, rejection, or abandonment, the message returns to the queue without incrementing the delivery count. This behavior means that messages might be redelivered more times than the configured max delivery count.
51+
52+
To avoid unexpected message redelivery behavior, consider the following guidance when you design your device code:
53+
54+
* Design your device code to explicitly abandon messages that can't be processed successfully.
55+
* Monitor message lock timeouts and handle them appropriately in your application logic.
56+
* Consider implementing retry logic that explicitly abandons messages after a certain number of local processing attempts.
57+
58+
Without explicit abandonment, messages continue cycling between the Enqueued and Invisible states indefinitely until they expire based on time-to-live.
4759

4860
A device ordinarily completes a cloud-to-device message when the loss of the message doesn't affect the application logic. An example of this completion might be when the device persists the message content locally or successfully executes an operation. The message could also carry transient information, whose loss wouldn't impact the functionality of the application. Sometimes, for long-running tasks, you can:
4961

0 commit comments

Comments
 (0)