node-red-contrib-gearman 1.0.6
A Node-RED node for submitting and monitoring Gearman jobs.
node-red-contrib-gearman
A Node-RED node for submitting jobs to a Gearman job server and receiving results or progress updates.
Overview
This custom node lets you integrate Node-RED flows with a Gearman job server.
You can:
- Submit jobs to Gearman workers
- Receive results when jobs complete
- Receive progress updates from workers
- Monitor job status directly in Node-RED
Installation
From within your Node-RED user directory (usually ~/.node-red
):
npm install node-red-contrib-gearman
Or add it to your package.json
dependencies and restart Node-RED.
If you’re using Docker:
# Build a Node-RED image with this node included
docker build -t my-nodered-gearman . docker run -it -p 1880:1880 my-nodered-gearman
Node Configuration
Connection
Field | Description | Default |
---|---|---|
Host | Hostname or IP of the Gearman server | localhost |
Port | Port number | 4730 |
Job
Field | Description |
---|---|
Job Function Name | Name of the Gearman job to execute |
Wait for Result | If checked, the node waits for the worker to return a result; otherwise submits in background |
Payload | Whatever is in msg.payload will be sent as job data (JSON serialized automatically) |
Usage Examples
1. Send a simple object
Inject Node Payload:
{
"task": "resize",
"width": 400,
"height": 300
}
Gearman Node:
- Job =
resize_image
- Wait for Result = checked
Worker receives:
{"task":"resize","width":400,"height":300}
2. Send only part of msg.payload
Use a Function node upstream:
// Only send the 'user' object from payload
msg.job = "generate_report";
msg.payload = msg.payload.user;
return msg;
Gearman receives just:
{"id":123,"name":"Adze"}
3. Dynamic Job & Host
You can override per message:
msg.job = "resize_image";
msg.payload = { url: "https://example.com/a.jpg", width: 400 };
msg.host = "gearmand"; // optional if different host
msg.port = 4730;
return msg;
Outputs
- Output 0 – Job result (when
waitForResult
is true) - Output 1 – Progress updates from the worker
Status colors:
Status | Color | Meaning |
---|---|---|
Connecting / In progress | 🟡 Yellow | Job is being processed |
Connected / Complete | 🟢 Green | Job completed successfully |
Error / Failed | 🔴 Red | Job failed or connection error |
Disconnected | ⚫ Grey | Node disconnected from Gearman |
Local Development with Docker
A sample docker-compose.yml
for local testing:
nodered:
build:
context: .
dockerfile: Dockerfile
container_name: nodered
ports:
- "1880:1880"
environment:
- TZ=UTC
depends_on:
- gearmand
restart: unless-stopped
Run it:
docker compose up --build
Then open http://localhost:1880 and use your new Gearman node.
Testing
You can test by running a simple Gearman worker:
gearman -w -f echo -- cat
Then send a job with Node-RED using the Gearman node and observe the echo output.
License
MIT © 2025 adri
See LICENSE for details.