node-red-contrib-gearman
v1.0.6
Published
A Node-RED node for submitting and monitoring Gearman jobs.
Readme
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-gearmanOr 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-gearmanNode 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
waitForResultis 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-stoppedRun it:
docker compose up --buildThen open http://localhost:1880 and use your new Gearman node.
Testing
You can test by running a simple Gearman worker:
gearman -w -f echo -- catThen send a job with Node-RED using the Gearman node and observe the echo output.
License
MIT © 2025 adri
See LICENSE for details.
