tags: api/space-lua references:
The Message Queue API provides functions for implementing a simple message queue system.
mq.ack(queue, id)
Acknowledges one queue message as processed.
Parameters:
queue (string) — Queue name.id (string) — Message ID.mq.awaitEmptyQueue(queue)
Waits until a queue has no pending or processing messages.
Parameters:
queue (string) — Queue name.mq.batchAck(queue, ids)
Acknowledges multiple queue messages as processed.
Parameters:
queue (string) — Queue name.ids (table) — Message IDs.mq.batchSend(queue, bodies)
Sends multiple messages to a queue in one operation.
Parameters:
queue (string) — Queue name.bodies (table) — Message bodies.mq.flushAllQueues()
Removes all messages from every queue.
mq.flushQueue(queue)
Removes all messages from a queue.
Parameters:
queue (string) — Queue name.mq.getQueueStats(queue?)
Gets queued, processing, and dead-letter counts for a queue.
Parameters:
queue? (string) — Queue name.Returns:
table — Queue statistics.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(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 }
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)}