84 lines
1.8 KiB
Markdown
84 lines
1.8 KiB
Markdown
#api/space-lua
|
|
|
|
The Message Queue API provides functions for implementing a simple message queue system.
|
|
|
|
## 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)}
|
|
|
|
## API
|
|
### mq.subscribe(spec)
|
|
Subscribe to a queue. Spec keys:
|
|
|
|
* `queue`: name of the queue to subscribe to
|
|
* `batchSize`: maximum number of messages to ingest per run
|
|
* `autoAck`: (defaults to `true`), whether to automatically acknowledge a message if no error occurs during processing
|
|
* `run`: callback with the function to run, will receive a `messages` argument where each message is a table containing:
|
|
* `queue`: name of the queue the message was sent to
|
|
* `id`: message id
|
|
* `body`: message body
|
|
|
|
### mq.send(queue, body)
|
|
Sends a message to a queue.
|
|
|
|
Example:
|
|
```lua
|
|
mq.send("tasks", "my task")
|
|
```
|
|
|
|
### mq.batchSend(queue, bodies)
|
|
Sends multiple messages to a queue in a single operation.
|
|
|
|
Example:
|
|
```lua
|
|
mq.batchSend("tasks", {"task 1", "task 2" })
|
|
```
|
|
|
|
### mq.ack(queue, id)
|
|
Acknowledges a message from a queue, marking it as processed.
|
|
|
|
Example:
|
|
```lua
|
|
mq.ack("tasks", "message-123")
|
|
```
|
|
|
|
### mq.batchAck(queue, ids)
|
|
Acknowledges multiple messages from a queue in a single operation.
|
|
|
|
Example:
|
|
```lua
|
|
mq.batchAck("tasks", {"msg1", "msg2", "msg3"})
|
|
```
|
|
|
|
## Queue Management
|
|
|
|
### mq.getQueueStats(queue)
|
|
Retrieves statistics about a particular queue.
|
|
|
|
Example:
|
|
```lua
|
|
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:
|
|
```lua
|
|
mq.awaitEmptyQueue("tasks")
|
|
``` |