Skip to content

Commit 7c1da88

Browse files
Merge pull request #297787 from ecfan/patch-3
Branding and clarity updates
2 parents 4a3dace + d9e20af commit 7c1da88

File tree

1 file changed

+30
-38
lines changed

1 file changed

+30
-38
lines changed

articles/logic-apps/logic-apps-handle-large-messages.md

Lines changed: 30 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -28,40 +28,35 @@ This article provides an overview about how chunking works in Azure Logic Apps a
2828

2929
## What makes messages "large"?
3030

31-
Messages are "large" based on the service handling those messages.
32-
The exact size limit on large messages differs across Logic Apps and connectors.
33-
Both Logic Apps and connectors can't directly consume large messages,
34-
which must be chunked. For the Logic Apps message size limit,
35-
see [Logic Apps limits and configuration](../logic-apps/logic-apps-limits-and-config.md).
36-
For each connector's message size limit, see the
37-
[connector's reference documentation](/connectors/connector-reference/connector-reference-logicapps-connectors).
31+
Messages are "large" based on the service handling those messages. The exact size limit on large messages differs across Azure Logic Apps and connectors. Both Azure Logic Apps and connectors can't directly consume large messages, which must be chunked. For the Azure Logic Apps message size limit, see [Azure Logic Apps limits and configuration](../logic-apps/logic-apps-limits-and-config.md).
32+
For each connector's message size limit, see the [connector's reference documentation](/connectors/connector-reference/connector-reference-logicapps-connectors).
3833

39-
### Chunked message handling for Logic Apps
34+
### Chunked message handling for Azure Logic Apps
4035

41-
Logic Apps can't directly use outputs from chunked
36+
Azure Logic Apps can't directly use outputs from chunked
4237
messages that are larger than the message size limit.
4338
Only actions that support chunking can access the message content in these outputs.
4439
So, an action that handles large messages must meet *either* these criteria:
4540

46-
* Natively support chunking when that action belongs to a connector.
47-
* Have chunking support enabled in that action's runtime configuration.
41+
* The action must natively support chunking when that action belongs to a connector.
42+
43+
* The action must have chunking support enabled in that action's runtime configuration.
4844

4945
Otherwise, you get a runtime error when you try to access large content output.
5046
To enable chunking, see [Set up chunking support](#set-up-chunking).
5147

5248
### Chunked message handling for connectors
5349

54-
Services that communicate with Logic Apps can have their own message size limits.
55-
These limits are often smaller than the Logic Apps limit. For example, assuming that
50+
Services that communicate with Azure Logic Apps can have their own message size limits.
51+
These limits are often smaller than the Azure Logic Apps limit. For example, assuming that
5652
a connector supports chunking, a connector might consider a 30-MB message as large,
57-
while Logic Apps does not. To comply with this connector's limit,
58-
Logic Apps splits any message larger than 30 MB into smaller chunks.
53+
while Azure Logic Apps doesn't. To comply with this connector's limit, Azure Logic Apps splits any message larger than 30 MB into smaller chunks.
5954

6055
For connectors that support chunking, the underlying chunking protocol is invisible to end users.
6156
However, not all connectors support chunking, so these connectors generate runtime
6257
errors when incoming messages exceed the connectors' size limits.
6358

64-
For actions that support and are enabled for chunking, you can't use trigger bodies, variables, and expressions such as `@triggerBody()?['Content']` because using any of these inputs prevents the chunking operation from happening. Instead, use the [**Compose** action](../logic-apps/logic-apps-perform-data-operations.md#compose-action). Specifically, you must create a `body` field by using the **Compose** action to store the data output from the trigger body, variable, expression, and so on, for example:
59+
For actions that support and are enabled for chunking, you can't use trigger bodies, variables, and expressions such as **`triggerBody()?['Content']`** because using any of these inputs prevents the chunking operation from happening. Instead, use the [**Compose** action](../logic-apps/logic-apps-perform-data-operations.md#compose-action). Specifically, you must create a **`body`** field by using the **Compose** action to store the data output from the trigger body, variable, expression, and so on, for example:
6560

6661
```json
6762
"Compose": {
@@ -76,7 +71,8 @@ For actions that support and are enabled for chunking, you can't use trigger bod
7671
"type": "Compose"
7772
},
7873
```
79-
Then, to reference the data, in the chunking action, use `@body('Compose')` .
74+
75+
To reference the data, in the chunking action, use the expression **`body('Compose')`**, for example:
8076

8177
```json
8278
"Create_file": {
@@ -118,17 +114,17 @@ Then, to reference the data, in the chunking action, use `@body('Compose')` .
118114

119115
In generic HTTP scenarios, you can split up large content downloads and uploads over HTTP,
120116
so that your logic app and an endpoint can exchange large messages. However,
121-
you must chunk messages in the way that Logic Apps expects.
117+
you must chunk messages in the way that Azure Logic Apps expects.
122118

123119
If an endpoint has enabled chunking for downloads or uploads,
124120
the HTTP actions in your logic app automatically chunk large messages. Otherwise,
125121
you must set up chunking support on the endpoint. If you don't own or control
126122
the endpoint or connector, you might not have the option to set up chunking.
127123

128124
Also, if an HTTP action doesn't already enable chunking,
129-
you must also set up chunking in the action's `runTimeConfiguration` property.
125+
you must also set up chunking in the action's **`runTimeConfiguration`** property.
130126
You can set this property inside the action, either directly in the code view
131-
editor as described later, or in the Logic Apps Designer as described here:
127+
editor as described later, or in the workflow designer as described here:
132128

133129
1. In the HTTP action's upper-right corner,
134130
choose the ellipsis button (**...**),
@@ -155,7 +151,7 @@ or *chunked downloads*. When your logic app sends an HTTP GET
155151
request to an endpoint for downloading content,
156152
and the endpoint responds with a "206" status code,
157153
the response contains chunked content.
158-
Logic Apps can't control whether an endpoint supports partial requests.
154+
Azure Logic Apps can't control whether an endpoint supports partial requests.
159155
However, when your logic app gets the first "206" response,
160156
your logic app automatically sends multiple requests to download all the content.
161157

@@ -166,19 +162,17 @@ That way, if the endpoint supports chunked downloads but
166162
doesn't send chunked content, you can *suggest*
167163
this option by setting the `Range` header in your HTTP GET request.
168164

169-
These steps describe the detailed process Logic Apps uses for
170-
downloading chunked content from an endpoint to your logic app:
165+
These steps describe the detailed process that Azure Logic Apps uses for
166+
downloading chunked content from an endpoint to your workflow:
171167

172-
1. Your logic app sends an HTTP GET request to the endpoint.
168+
1. Your workflow sends an HTTP GET request to the endpoint.
173169

174170
The request header can optionally include a `Range` field that
175171
describes a byte range for requesting content chunks.
176172

177173
2. The endpoint responds with the "206" status code and an HTTP message body.
178174

179-
Details about the content in this chunk appear in the response's `Content-Range` header,
180-
including information that helps Logic Apps determine the start and end for the chunk,
181-
plus the total size of the entire content before chunking.
175+
Details about the content in this chunk appear in the response's `Content-Range` header. These details include information that helps Azure Logic Apps determine the start and end for the chunk, plus the total size of the entire content before chunking.
182176

183177
3. Your logic app automatically sends follow-up HTTP GET requests.
184178

@@ -218,45 +212,43 @@ Your logic app can then send an initial POST or PUT message to the target endpoi
218212
After the endpoint responds with a suggested chunk size, your logic app follows
219213
up by sending HTTP PATCH requests that contain the content chunks.
220214

221-
The following steps describe the detailed process Logic Apps uses for uploading
215+
The following steps describe the detailed process that Azure Logic Apps uses for uploading
222216
chunked content from your logic app to an endpoint:
223217

224-
1. Your logic app sends an initial HTTP POST or PUT request with an empty message body. The request header, includes the following information about the content that your logic app wants to upload in chunks:
218+
1. Your workflow sends an initial HTTP POST or PUT request with an empty message body.
219+
220+
The request header includes the following information about the content that your logic app wants to upload in chunks:
225221

226-
| Logic Apps request header field | Value | Type | Description |
227-
|---------------------------------|-------|------|-------------|
222+
| Request header field | Value | Type | Description |
223+
|----------------------|-------|------|-------------|
228224
| **x-ms-transfer-mode** | chunked | String | Indicates that the content is uploaded in chunks |
229225
| **x-ms-content-length** | <*content-length*> | Integer | The entire content size in bytes before chunking |
230-
||||
231226

232227
1. The endpoint responds with "200" success status code and the following information:
233228

234229
| Endpoint response header field | Type | Required | Description |
235230
|--------------------------------|------|----------|-------------|
236231
| **Location** | String | Yes | The URL location where to send the HTTP PATCH messages |
237232
| **x-ms-chunk-size** | Integer | No | The suggested chunk size in bytes |
238-
||||
239233

240-
1. Your logic app creates and sends follow-up HTTP PATCH messages - each with the following information:
234+
1. Your workflow creates and sends follow-up HTTP PATCH messages - each with the following information:
241235

242236
* A content chunk based on **x-ms-chunk-size** or some internally calculated size until all the content totaling **x-ms-content-length** is sequentially uploaded
243237

244238
* The following header information about the content chunk sent in each PATCH message:
245239

246-
| Logic Apps request header field | Value | Type | Description |
247-
|---------------------------------|-------|------|-------------|
240+
| Request header field | Value | Type | Description |
241+
|----------------------|-------|------|-------------|
248242
| **Content-Range** | <*range*> | String | The byte range for the current content chunk, including the starting value, ending value, and the total content size, for example: "bytes=0-1023/10100" |
249243
| **Content-Type** | <*content-type*> | String | The type of chunked content |
250244
| **Content-Length** | <*content-length*> | String | The length of size in bytes of the current chunk |
251-
|||||
252245

253246
1. After each PATCH request, the endpoint confirms the receipt for each chunk by responding with the "200" status code and the following response headers:
254247

255248
| Endpoint response header field | Type | Required | Description |
256249
|--------------------------------|------|----------|-------------|
257250
| **Range** | String | Yes | The byte range for content that has been received by the endpoint, for example: "bytes=0-1023" |
258251
| **x-ms-chunk-size** | Integer | No | The suggested chunk size in bytes |
259-
||||
260252

261253
For example, this action definition shows an HTTP POST request for uploading chunked content to an endpoint. In the action's `runTimeConfiguration` property,
262254
the `contentTransfer` property sets `transferMode` to `chunked`:

0 commit comments

Comments
 (0)