sqs://
Amazon SQS producer + polling consumer. Built on aws-sdk-go-v2/service/sqs.
Supports standard + FIFO queues, batched sends, long-poll receives,
message attributes, auto-create with custom queue attributes (KMS,
redrive policy, retention).
URI shape
sqs://<queue-name>?region=us-east-1&operation=sendMessage
FIFO queues use the .fifo suffix convention (queue-name.fifo) —
the producer automatically enables FIFO behaviour (MessageGroupId
required, content-based or explicit MessageDeduplicationId).
Producer operations
| operation |
What it does |
sendMessage (default) |
Send the In body as a single message. |
sendBatchMessage |
Send up to 10 messages. Body is []string, []any, or a batchSeparator-split string. |
deleteMessage |
Delete by HelixAwsSqsReceiptHandle header. |
listQueues |
Returns []string of queue URLs as the body. |
purgeQueue |
Drop all messages from the queue. |
getQueueUrl |
Body becomes the resolved queue URL. |
autoCreateQueue=true runs CreateQueue with the configured queue
attributes (visibility, retention, redrive, KMS) when the queue is
missing.
Parameters
Common
| Param |
Type |
Default |
Description |
queueNameOrArn |
string |
from URI |
Queue name or ARN. |
region |
string |
us-east-1 |
AWS region. |
autoCreateQueue |
boolean |
false |
Create queue on first use. |
uriEndpointOverride (alias endpoint) |
string |
— |
Custom SQS endpoint (LocalStack, ElasticMQ). |
protocol |
enum |
https |
Transport protocol. |
queueOwnerAWSAccountId |
string |
— |
Cross-account access. |
Consumer
| Param |
Type |
Default |
Description |
concurrentConsumers |
integer |
1 |
Parallel receive goroutines. |
maxMessagesPerPoll |
integer |
10 |
MaxNumberOfMessages on ReceiveMessage (1-10). |
waitTimeSeconds |
integer |
0 |
Long-poll wait (1-20s). |
visibilityTimeout |
integer |
— |
Per-receive visibility (seconds). |
attributeNames / messageAttributeNames |
string |
— |
CSV of attributes to request. |
sortAttributeName |
string |
— |
Sort each batch by this message attribute before dispatch. |
deleteAfterRead |
boolean |
true |
Delete each message after the route succeeds. |
deleteIfFiltered |
boolean |
false |
Delete filtered messages too. |
extendMessageVisibility |
boolean |
false |
Extend visibility while the route still processes. |
sendEmptyMessageWhenIdle |
boolean |
false |
Heartbeat Exchange on empty polls. |
Producer
| Param |
Type |
Default |
Description |
operation |
enum |
sendMessage |
See table above. |
delaySeconds |
integer |
— |
Per-message delay (0-900s). Header overrides. |
batchSeparator |
string |
, |
Used to split a string body for sendBatchMessage. |
messageGroupIdStrategy (FIFO) |
enum |
— |
useExchangeId (default), usePropertyValue, useConstant. |
messageGroupIdConstant (FIFO) |
string |
— |
Value for useConstant. |
messageGroupIdPropertyName (FIFO) |
string |
— |
Property name for usePropertyValue. |
messageDeduplicationIdStrategy (FIFO) |
enum |
— |
useExchangeId or useContentBasedDeduplication. |
messageHeaderExceededLimit |
enum |
WARN |
Behaviour when exchange headers exceed SQS attribute limits: WARN/IGNORE/FAIL. |
Queue attributes (applied on auto-create)
| Param |
Type |
Description |
maximumMessageSize / messageRetentionPeriod / receiveMessageWaitTimeSeconds |
integer |
Queue-level defaults. |
redrivePolicy |
string |
JSON: {"deadLetterTargetArn":"…","maxReceiveCount":"…"}. |
policy |
string |
IAM policy JSON. |
serverSideEncryptionEnabled + kmsMasterKeyId + kmsDataKeyReusePeriodSeconds |
mixed |
SSE-SQS configuration. |
Polling scheduler
delay (500ms), initialDelay (1s), useFixedDelay, repeatCount,
greedy, pollInterval (legacy alias).
Credentials
Same chain as s3://: static, default chain, named profile.
| Header |
Direction |
HelixAwsSqsMessageId |
Written on send / receive |
HelixAwsSqsReceiptHandle |
Written on receive; required for deleteMessage |
HelixAwsSqsMD5OfBody |
Written |
HelixAwsSqsAttributes |
Written on receive (system attrs) |
HelixAwsSqsMessageAttributes |
Both (map[string]string) |
HelixAwsSqsDelaySeconds |
Read (per-message override) |
HelixAwsSqsMessageGroupId |
Read (FIFO) |
HelixAwsSqsMessageDeduplicationId |
Read (FIFO) |
HelixAwsSqsOperation |
Read (per-message op override) |
Examples
Send + receive
# producer
- to: sqs://orders?region=us-east-1
# body: "the message text"
# consumer
trigger:
uri: sqs://orders?waitTimeSeconds=20&maxMessagesPerPoll=10&deleteAfterRead=true
steps:
- log:
message: "Got: ${body}"
FIFO queue
- to: sqs://events.fifo?messageGroupIdStrategy=useConstant&messageGroupIdConstant=trades&messageDeduplicationIdStrategy=useExchangeId
Auto-create with redrive
- to: sqs://main-queue
params:
autoCreateQueue: "true"
visibilityTimeout: "60"
redrivePolicy: '{"deadLetterTargetArn":"arn:aws:sqs:us-east-1:000000:dlq","maxReceiveCount":"5"}'
See also
s3:// — paired AWS sibling component.