1.8 KiB
1.8 KiB
#api/space-lua
The Message Queue API provides functions for implementing a simple message queue system.
Example
mq.subscribe {
queue = "testqueue",
batchSize = 1,
run = function(messages)
for _, msg in ipairs(messages) do
editor.flashNotification("Received message: " .. msg.body)
end
end
}
${widgets.button("Send message on queue", function() mq.send("testqueue", "Hello world") end)}
API
mq.subscribe(spec)
Subscribe to a queue. Spec keys:
queue: name of the queue to subscribe tobatchSize: maximum number of messages to ingest per runautoAck: (defaults totrue), whether to automatically acknowledge a message if no error occurs during processingrun: callback with the function to run, will receive amessagesargument where each message is a table containing:queue: name of the queue the message was sent toid: message idbody: message body
mq.send(queue, body)
Sends a message to a queue.
Example:
mq.send("tasks", "my task")
mq.batchSend(queue, bodies)
Sends multiple messages to a queue in a single operation.
Example:
mq.batchSend("tasks", {"task 1", "task 2" })
mq.ack(queue, id)
Acknowledges a message from a queue, marking it as processed.
Example:
mq.ack("tasks", "message-123")
mq.batchAck(queue, ids)
Acknowledges multiple messages from a queue in a single operation.
Example:
mq.batchAck("tasks", {"msg1", "msg2", "msg3"})
Queue Management
mq.getQueueStats(queue)
Retrieves statistics about a particular queue.
Example:
local stats = mq.getQueueStats("tasks")
print("Queue size: " .. stats.size)
print("Processing: " .. stats.processing)
mq.awaitEmptyQueue(queue)
Waits for a queue to become empty.
Example:
mq.awaitEmptyQueue("tasks")