Event Scalers in Azure Container Apps¶
Event scalers are the primary fit for worker-style apps where pending work exists outside the HTTP request path. Azure Container Apps implements these through KEDA-backed custom scale rules.
Event-driven rule pattern¶
The common rule shape is:
template:
scale:
minReplicas: 0
maxReplicas: 30
rules:
- name: worker-rule
custom:
type: <keda-scaler-type>
metadata:
<key>: <value>
auth:
- secretRef: <secret-name>
triggerParameter: <parameter-name>
flowchart TD
A[Queue or event backlog grows] --> B[KEDA custom scaler polls source]
B --> C[Desired replica count rises]
C --> D[Worker revision scales out]
D --> E[Backlog drains]
E --> F[Scale in toward minReplicas] Supported event-scaler families¶
| Event source | Scaler type | Learn-confirmed metadata/auth details | Notes |
|---|---|---|---|
| Azure Service Bus | azure-servicebus | queueName, namespace, messageCount, auth mapping for connection | Learn provides explicit examples |
| Azure Queue Storage | azure-queue | accountName, queueName, queueLength, secret or managed identity examples | Covers Azure Storage Queue workloads |
| Azure Event Hubs | Event Hubs via KEDA custom rule | Source family is documented, but current Learn page does not include a full ACA metadata example | Validate exact metadata before production |
| Apache Kafka | Kafka via KEDA custom rule | Source family is documented, but current Learn page does not include a full ACA metadata example | Validate exact metadata before production |
Service Bus example¶
az containerapp update \
--name "$APP_NAME" \
--resource-group "$RG" \
--min-replicas 0 \
--max-replicas 30 \
--scale-rule-name "servicebus-orders" \
--scale-rule-type azure-servicebus \
--scale-rule-metadata "queueName=orders" "namespace=$SERVICEBUS_NAMESPACE" "messageCount=25" \
--scale-rule-auth "connection=servicebus-connection"
Azure Queue Storage example¶
az containerapp update \
--name "$APP_NAME" \
--resource-group "$RG" \
--min-replicas 0 \
--max-replicas 40 \
--scale-rule-name "storagequeue-ingest" \
--scale-rule-type azure-queue \
--scale-rule-metadata "queueName=ingest" "queueLength=50" "accountName=$STORAGE_ACCOUNT" \
--scale-rule-auth "connection=storage-connection"
Identity options¶
Microsoft Learn documents two common patterns:
- Secret-based auth using
secretRefmappings for trigger parameters such asconnection - Managed identity using the
identityfield for supported scalers
Example managed identity shape from Learn:
{
"type": "azure-queue",
"metadata": {
"accountName": "<storage-account>",
"queueName": "<queue-name>",
"queueLength": "1"
},
"identity": "system"
}
Conservative guidance for Event Hubs and Kafka¶
Full ACA-specific metadata examples for Event Hubs and Kafka are not currently enumerated in Microsoft Learn
Microsoft Learn confirms these event-source families are supported through KEDA-backed scaling, but the current page does not provide the complete metadata key sets in the way it does for Service Bus and Azure Queue. Validate exact metadata against the current scaler contract before production rollout.
See Also¶
- Scaling Overview
- Custom Scalers
- Scaling Rules Reference
- Scaling Best Practices
- Event Scaler Mismatch