Skip to content

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.

Headers

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.