From 0f5b2ba9e5353c59cbea2f66386a284d30a9607d Mon Sep 17 00:00:00 2001 From: sancar Date: Tue, 11 Nov 2025 16:09:59 +0300 Subject: [PATCH] Update Flow-Control Waitlist Size docs --- docs.json | 3 +- img/qstash/flowcontrol.png | Bin 0 -> 73051 bytes qstash/api/flow-control/get.mdx | 2 +- qstash/api/flow-control/list.mdx | 2 +- qstash/features/flowcontrol.mdx | 16 +++++++-- workflow/features/flow-control/monitor.mdx | 14 ++++++++ .../features/flow-control/parallelism.mdx | 31 ------------------ workflow/rest/flow-control/get.mdx | 2 +- workflow/rest/flow-control/list.mdx | 2 +- 9 files changed, 34 insertions(+), 38 deletions(-) create mode 100644 img/qstash/flowcontrol.png create mode 100644 workflow/features/flow-control/monitor.mdx diff --git a/docs.json b/docs.json index 27f7121b..66f80cbc 100644 --- a/docs.json +++ b/docs.json @@ -1292,7 +1292,8 @@ "pages": [ "workflow/features/flow-control", "workflow/features/flow-control/rate-period", - "workflow/features/flow-control/parallelism" + "workflow/features/flow-control/parallelism", + "workflow/features/flow-control/monitor" ] }, { diff --git a/img/qstash/flowcontrol.png b/img/qstash/flowcontrol.png new file mode 100644 index 0000000000000000000000000000000000000000..15af4794ea76590bb716f57d8ae4905abeaa7812 GIT binary patch literal 73051 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

Ig2L_bW|m`am^KcZsA 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 M!h^w1j;>yh6|5x+NI@{FA+V_ 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 Ru2t~g30b9MX-AE&{6GD?fsFtF literal 0 HcmV?d00001 diff --git a/qstash/api/flow-control/get.mdx b/qstash/api/flow-control/get.mdx index 6d2ae8cb..769d5838 100644 --- a/qstash/api/flow-control/get.mdx +++ b/qstash/api/flow-control/get.mdx @@ -18,7 +18,7 @@ authMethod: "bearer" - The number of messages in the wait list that waits for `parallelism` set in the flow control. + The number of messages in the wait list that waits for `parallelism`/`rate` set in the flow control. diff --git a/qstash/api/flow-control/list.mdx b/qstash/api/flow-control/list.mdx index a4302390..e5990147 100644 --- a/qstash/api/flow-control/list.mdx +++ b/qstash/api/flow-control/list.mdx @@ -13,7 +13,7 @@ authMethod: "bearer" - The number of messages in the wait list that waits for `parallelism` set in the flow control. + The number of messages in the wait list that waits for `parallelism`/`rate` set in the flow control. diff --git a/qstash/features/flowcontrol.mdx b/qstash/features/flowcontrol.mdx index 0ff31f69..3d252861 100644 --- a/qstash/features/flowcontrol.mdx +++ b/qstash/features/flowcontrol.mdx @@ -76,7 +76,7 @@ curl -XPOST -H 'Authorization: Bearer XXX' \ You can also use the Rest API to get information how many messages waiting for parallelism limit. See the [API documentation](/qstash/api/flow-control/get) for more details. -### Rate, Parallelism, and Period Together +## Rate, Parallelism, and Period Together All three parameters can be combined. For example, with a rate of 10 per minute, parallelism of 20, and a period of 1 minute, QStash will trigger 10 calls in the first minute and another 10 in the next. Since none of them will have finished, the system will wait until one completes before triggering another. @@ -99,4 +99,16 @@ curl -XPOST -H 'Authorization: Bearer XXX' \ 'https://qstash.upstash.io/v2/publish/https://example.com' \ -d '{"message":"Hello, World!"}' ``` - \ No newline at end of file + + +## Monitor + +You can monitor wait list size of your flow control key's from the console `FlowControl` tab. + + + + + +Also you can get the same info using the REST API. +- [List All Flow Control Keys](/qstash/api/flow-control/list). +- [Single Flow Control Key](/qstash/api/flow-control/get). diff --git a/workflow/features/flow-control/monitor.mdx b/workflow/features/flow-control/monitor.mdx new file mode 100644 index 00000000..1820de21 --- /dev/null +++ b/workflow/features/flow-control/monitor.mdx @@ -0,0 +1,14 @@ +--- +title: "Monitoring" +--- + +You can monitor wait list size of your flow control key's from the console `FlowControl` tab. + + + + + +Also you can get the same info using the REST API. +- [List All Flow Control Keys](/workflow/rest/flow-control/list). +- [Single Flow Control Key](/workflow/rest/flow-control/get). + diff --git a/workflow/features/flow-control/parallelism.mdx b/workflow/features/flow-control/parallelism.mdx index e75fd8d3..143458e6 100644 --- a/workflow/features/flow-control/parallelism.mdx +++ b/workflow/features/flow-control/parallelism.mdx @@ -44,34 +44,3 @@ The step in the waitlist will wait for a step to complete and hand off it's toke - -## Monitoring - -You can monitor wait list size of your flow control key's using the REST API. - - - -```bash Single Flow Control Key -curl -X GET https://qstash.upstash.io/v2/flowControl/YOUR_FLOW_CONTROL_KEY \ - -H "Authorization: Bearer " -``` - -```bash List All Flow Control Keys -curl -X GET https://qstash.upstash.io/v2/flowControl/ \ - -H "Authorization: Bearer " -``` - - -It will return the wait list size. In case you request all flow-control keys, it is an array response. - - - The identifier for your flow control configuration - - - - Number of steps waiting to be executed due to parallelism limits - - - - Adding a dashboard to list and manage flow control key's is on our roadmap. - diff --git a/workflow/rest/flow-control/get.mdx b/workflow/rest/flow-control/get.mdx index ea38e499..a9257bc9 100644 --- a/workflow/rest/flow-control/get.mdx +++ b/workflow/rest/flow-control/get.mdx @@ -18,7 +18,7 @@ authMethod: "bearer" - The number of messages in the wait list that waits for `parallelism` set in the flow control. + The number of messages in the wait list that waits for `parallelism`/`rate` set in the flow control. diff --git a/workflow/rest/flow-control/list.mdx b/workflow/rest/flow-control/list.mdx index ecbc8820..ec8d6c36 100644 --- a/workflow/rest/flow-control/list.mdx +++ b/workflow/rest/flow-control/list.mdx @@ -13,7 +13,7 @@ authMethod: "bearer" - The number of messages in the wait list that waits for `parallelism` set in the flow control. + The number of messages in the wait list that waits for `parallelism`/`rate` set in the flow control.