137 lines
2.3 KiB
Markdown
137 lines
2.3 KiB
Markdown
---
|
|
tags: api/space-lua
|
|
references:
|
|
- plug-api/syscalls/mq.ts
|
|
- client/plugos/syscalls/mq.ts
|
|
- client/data/mq.datastore.ts
|
|
---
|
|
|
|
The Message Queue API provides functions for implementing a simple message queue system.
|
|
|
|
<!--#lua spacelua.renderApiDocumentation("mq") -->
|
|
## 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:**
|
|
|
|
```lua
|
|
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:**
|
|
|
|
```lua
|
|
mq.subscribe { queue = "tasks", batchSize = 1, run = function(messages) print(messages[1].body) end }
|
|
```
|
|
<!--/lua-->
|
|
|
|
## Example
|
|
|
|
```space-lua
|
|
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)}
|
|
|