Getting Started
Really Simple Message Queue (RSMQ) is a lightweight message queue with a REST API, backed by Redis. It lets you create named queues, send messages, receive the next message, and delete processed messages — all over HTTP, with no extra client library needed. Available as an open web service in Eyevinn Open Source Cloud.
Prerequisites
- If you have not already done so, sign up for an Eyevinn OSC account
- A running Valkey instance to store the queue data
Step 1: Create a Valkey instance
Navigate to the Valkey service in Eyevinn OSC, click Create valkey, enter a name (e.g. msgstore), and wait for it to start.
Click the instance card when it is running and note the host and port shown in the connection details. Your Redis URL will be:
redis://{host}:{port}
Step 2: Store the Valkey URL as a secret
Navigate to the RSMQ service, go to the Service Secrets tab, and click New Secret. Name it redisurl and paste the Valkey connection URL as the value.
Step 3: Create an RSMQ instance
Click Create rest-rsmq, fill in:
| Field | Value |
|---|---|
| Name | e.g. myqueue |
| RedisUrl | {{secrets.redisurl}} |
Click Create. When the status turns green, click the instance card to copy the base URL.
Step 4: Manage queues and messages
Create a queue:
curl -X POST https://{instance-url}/queues/tasks \
-H 'Content-Type: application/json' \
-d '{"maxsize": -1, "vt": 30}'
Send a message:
curl -X POST https://{instance-url}/queues/tasks/messages \
-H 'Content-Type: application/json' \
-d '{"message": "{\"job\":\"resize\",\"file\":\"photo.jpg\"}"}'
Receive the next message (marks it invisible for vt seconds):
curl https://{instance-url}/queues/tasks/messages/pop
Delete a processed message:
curl -X DELETE https://{instance-url}/queues/tasks/messages/{id}
Usage Example
const BASE = 'https://myqueue.smrchy-rest-rsmq.auto.prod.osaas.io';
async function enqueue(job) {
await fetch(`${BASE}/queues/jobs/messages`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ message: JSON.stringify(job) })
});
}
async function dequeue() {
const res = await fetch(`${BASE}/queues/jobs/messages/pop`);
return res.ok ? res.json() : null;
}
CLI Usage
# Create the Valkey instance first
osc create valkey-io-valkey msgstore
# Then create RSMQ pointing at it
osc create smrchy-rest-rsmq myqueue -o RedisUrl="redis://{valkey-host}:{valkey-port}"