Queue Storage¶
Consume and produce Azure Storage queue messages in PowerShell.
Queue Trigger¶
function.json:
{
"bindings": [
{
"name": "QueueItem",
"type": "queueTrigger",
"direction": "in",
"queueName": "work-items",
"connection": "AzureWebJobsStorage"
}
]
}
run.ps1:
param($QueueItem, $TriggerMetadata)
# JSON messages are deserialized automatically into a Hashtable/PSObject
Write-Information "Processing item $($QueueItem.id)"
Write-Information "Dequeue count: $($TriggerMetadata.DequeueCount)"
Output Queue Binding¶
Emit messages to another queue:
{
"name": "OutputQueue",
"type": "queue",
"direction": "out",
"queueName": "results",
"connection": "AzureWebJobsStorage"
}
Push-OutputBinding -Name OutputQueue -Value (@{ id = $QueueItem.id; status = "done" } | ConvertTo-Json)
Poison Messages¶
After the runtime exhausts retries (default 5 dequeues), the message moves to <queueName>-poison. Add a trigger on that queue to handle failures:
param($QueueItem, $TriggerMetadata)
Write-Error "Poison message received: $($QueueItem | ConvertTo-Json)"
Idempotency
A message can be delivered more than once. Make handlers idempotent — key writes on a stable message id.