⛓️AWS SQS FIFO
Starting with soketi 0.30, you may now use AWS's SQS FIFO queues to process webhooks and other background tasks.
Creating the queue
The driver works strictly with the High-Throughput FIFO Queue mode. Below you will find an example command line to create a FIFO Queue for soketi using the AWS CLI.
The recommended values can be adjusted according to your needs, such as MessageRetentionPeriod
, but these are optimal for this soketi's use case.
Keep in mind that the DeduplicationScope
and FifoThroughputLimit
should be set as below since the queues may be processed on an app ID and queue type basis for extreme throughput. The ContentBasedDeduplication
should be true.
Caveats
IAM Permissions
Make sure that when setting the IAM policies for the authentication user or instance role, you will include the following IAM permissions:
sqs:ReceiveMessage
sqs:SendMessage
Visibility Timeout too low
Since the webhooks are used for now for sending HTTP requests or Lambda invocations, make sure that the total process time is lower than the Visibility Timeout duration, otherwise, another consumer can claim the message after the duration.
Environment Variables
SOKETI_QUEUE_SQS_REGION
us-east-1
Any string
The region in which the SQS queue is deployed.
SOKETI_QUEUE_SQS_CLIENT_OPTIONS
''
Any JSON-formatted string
A JSON-formatted string with additional options to pass to the new SQS()
function.
SOKETI_QUEUE_SQS_URL
''
Any string
The URL of the queue. It has to be ending in .fifo
(ex: https://sqs.eu-central-1.amazonaws.com/xxxx/myqueue.fifo
)
SOKETI_QUEUE_SQS_ENDPOINT
''
Any string
Optional string to test SQS locally or manually define the endpoint for the SQS API.
SOKETI_QUEUE_SQS_PROCESS_BATCH
false
true
, false
Whether to process SQS in batches. This will make fewer requests to SQS, but will take longer to receive items from the queue.
SOKETI_QUEUE_SQS_BATCH_SIZE
1
Any number
If batching is enabled, how many messages (at most) to receive for each batch. Consider setting to at least 1
and maximum of 10
(hard limit f SQS).
SOKETI_QUEUE_SQS_POLLING_WAIT_TIME_MS
0
Any number (milliseconds)
The time to take between polls. Higher will delay some jobs, but reduces requests number.
Last updated