The Message Queue API provides functions for implementing a simple message queue system.
mq.ack
mq.ack(queue, id)
Acknowledges one queue message as processed.
Parameters:
queue(string) — Queue name.id(string) — Message ID.
mq.awaitEmptyQueue
mq.awaitEmptyQueue(queue)
Waits until a queue has no pending or processing messages.
Parameters:
queue(string) — Queue name.
mq.batchAck
mq.batchAck(queue, ids)
Acknowledges multiple queue messages as processed.
Parameters:
queue(string) — Queue name.ids(table) — Message IDs.
mq.batchSend
mq.batchSend(queue, bodies)
Sends multiple messages to a queue in one operation.
Parameters:
queue(string) — Queue name.bodies(table) — Message bodies.
mq.flushAllQueues
mq.flushAllQueues()
Removes all messages from every queue.
mq.flushQueue
mq.flushQueue(queue)
Removes all messages from a queue.
Parameters:
queue(string) — Queue name.
mq.getQueueStats
mq.getQueueStats(queue?)
Gets queued, processing, and dead-letter counts for a queue.
Parameters:
queue?(string) — Queue name.
Returns:
table— Queue statistics.
mq.send
mq.send(queue, body)
Sends a message to a queue.
Parameters:
queue(string) — Queue name.body— Message body.
Example:
mq.send("tasks", "my task")mq.subscribe
mq.subscribe(spec)
Subscribes a Space Lua callback to a message queue.
Parameters:
spec(table) — Subscription with queue, optional batchSize and pollInterval, autoAck (default true), and a run(messages) callback; each message has queue, id, and body fields.
Example:
mq.subscribe { queue = "tasks", batchSize = 1, run = function(messages) print(messages[1].body) end }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)}