n8n-nodes-bozonx-redis-sugar 1.17.0 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +157 -16
- package/dist/nodes/RedisCache/BozonxRedisCache.node.js +21 -6
- package/dist/nodes/RedisCache/BozonxRedisCache.node.js.map +1 -1
- package/dist/nodes/RedisCache/redisClient.js +19 -1
- package/dist/nodes/RedisCache/redisClient.js.map +1 -1
- package/dist/nodes/RedisQueueComplete/BozonxRedisQueueComplete.node.d.ts +5 -0
- package/dist/nodes/RedisQueueComplete/BozonxRedisQueueComplete.node.js +128 -0
- package/dist/nodes/RedisQueueComplete/BozonxRedisQueueComplete.node.js.map +1 -0
- package/dist/nodes/RedisQueueComplete/redis-queue-complete.svg +4 -0
- package/dist/nodes/RedisQueueComplete/redisClient.d.ts +9 -0
- package/dist/nodes/RedisQueueComplete/redisClient.js +93 -0
- package/dist/nodes/RedisQueueComplete/redisClient.js.map +1 -0
- package/dist/nodes/RedisQueueConsumer/BozonxRedisQueueConsumer.node.d.ts +5 -0
- package/dist/nodes/RedisQueueConsumer/BozonxRedisQueueConsumer.node.js +179 -0
- package/dist/nodes/RedisQueueConsumer/BozonxRedisQueueConsumer.node.js.map +1 -0
- package/dist/nodes/RedisQueueConsumer/redis-queue-consumer.svg +4 -0
- package/dist/nodes/RedisQueueConsumer/redisClient.d.ts +9 -0
- package/dist/nodes/RedisQueueConsumer/redisClient.js +93 -0
- package/dist/nodes/RedisQueueConsumer/redisClient.js.map +1 -0
- package/dist/nodes/RedisQueueProducer/BozonxRedisQueueProducer.node.d.ts +5 -0
- package/dist/nodes/RedisQueueProducer/BozonxRedisQueueProducer.node.js +224 -0
- package/dist/nodes/RedisQueueProducer/BozonxRedisQueueProducer.node.js.map +1 -0
- package/dist/nodes/RedisQueueProducer/redis-queue-producer.svg +4 -0
- package/dist/nodes/RedisQueueProducer/redisClient.d.ts +10 -0
- package/dist/nodes/RedisQueueProducer/redisClient.js +97 -0
- package/dist/nodes/RedisQueueProducer/redisClient.js.map +1 -0
- package/dist/nodes/RedisStreamProducer/BozonxRedisStreamProducer.node.js +54 -84
- package/dist/nodes/RedisStreamProducer/BozonxRedisStreamProducer.node.js.map +1 -1
- package/dist/nodes/RedisStreamProducer/redisClient.js +20 -2
- package/dist/nodes/RedisStreamProducer/redisClient.js.map +1 -1
- package/dist/nodes/RedisStreamTrigger/BozonxRedisStreamTrigger.node.js +4 -11
- package/dist/nodes/RedisStreamTrigger/BozonxRedisStreamTrigger.node.js.map +1 -1
- package/dist/package.json +12 -8
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -8
package/README.md
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
# n8n Nodes: Bozonx Redis
|
|
1
|
+
# n8n Nodes: Bozonx Redis Sugar
|
|
2
2
|
|
|
3
3
|
Community nodes for n8n to work with Redis:
|
|
4
4
|
|
|
5
|
-
- Redis Cache
|
|
6
|
-
- Redis Pub
|
|
7
|
-
- Redis
|
|
5
|
+
- **Redis Cache**: read/write JSON values with optional TTL
|
|
6
|
+
- **Redis Pub**: append entries to Redis Streams (XADD)
|
|
7
|
+
- **Redis Sub Trigger**: emit items from Redis Streams (XREAD)
|
|
8
|
+
- **Redis Queue Add**: add jobs to a Redis-based queue
|
|
9
|
+
- **Redis Queue Trigger**: process jobs from a Redis-based queue
|
|
10
|
+
- **Redis Queue Complete**: mark queue job as complete and check if it was the last job
|
|
8
11
|
|
|
9
12
|
n8n is a fair-code licensed workflow automation platform: https://n8n.io/
|
|
10
13
|
|
|
@@ -43,14 +46,14 @@ Read result hit: `{ found: true, key, data }`
|
|
|
43
46
|
Read result miss: `{ found: false, key }`
|
|
44
47
|
|
|
45
48
|
Details:
|
|
46
|
-
- When Payload Type is JSON,
|
|
49
|
+
- When Payload Type is YAML / JSON, the input is a string and is parsed as YAML first (YAML is a superset of JSON), then as JSON.
|
|
47
50
|
- When Payload Type is Data Fields, you can add multiple fields with a selected value type (string, number, boolean, json, null). JSON values are validated and stringified.
|
|
48
51
|
- TTL is optional; set to 0 to store without expiration. Units supported: seconds, minutes, hours, days.
|
|
49
52
|
|
|
50
53
|
### 2) Redis Pub (Streams)
|
|
51
54
|
|
|
52
55
|
- Event name: Redis stream key
|
|
53
|
-
- Payload Mode:
|
|
56
|
+
- Payload Mode: YAML / JSON or Key-Value
|
|
54
57
|
- Stream trimming: `MAXLEN ~ 1000000`
|
|
55
58
|
- Stream TTL: `EXPIRE 86400` seconds
|
|
56
59
|
|
|
@@ -61,11 +64,10 @@ Output item example:
|
|
|
61
64
|
```
|
|
62
65
|
|
|
63
66
|
Details:
|
|
64
|
-
-
|
|
65
|
-
- JSON mode sends a single field "data". If left empty, the incoming item is used and stringified.
|
|
67
|
+
- YAML / JSON mode sends a single field "data". Input is a string and is parsed as YAML first (YAML is a superset of JSON), then as JSON. If left empty, the incoming item is used and stringified.
|
|
66
68
|
- Key-Value mode lets you define typed fields (string, number, boolean, json, null). Invalid JSON values are rejected.
|
|
67
69
|
|
|
68
|
-
### 3) Redis
|
|
70
|
+
### 3) Redis Sub Trigger (Streams)
|
|
69
71
|
|
|
70
72
|
- Stream Key
|
|
71
73
|
- Allowed Stale (Seconds): if > 0, on start emit recent entries; 0 → only new
|
|
@@ -78,20 +80,99 @@ Emitted item example:
|
|
|
78
80
|
{ "payload": <parsed_payload_or_fields>, "_stream": "mystream", "_id": "1728666000000-0" }
|
|
79
81
|
```
|
|
80
82
|
|
|
83
|
+
### 4) Redis Queue Add
|
|
84
|
+
|
|
85
|
+
Add jobs to a Redis-based queue for sequential processing.
|
|
86
|
+
|
|
87
|
+
- **Queue ID**: unique identifier for the queue (leave empty to use current workflow ID)
|
|
88
|
+
- **Job Name**: optional name to group jobs within the same queue (e.g., separate queues per user: `user-123`)
|
|
89
|
+
- **Data**: job data in YAML/JSON format (leave empty to use incoming item)
|
|
90
|
+
- **Timeout (seconds)**: maximum time for job processing (default: 60)
|
|
91
|
+
- Queue TTL is automatically set to `timeout * 1.3 + 10` seconds
|
|
92
|
+
|
|
93
|
+
**Redis structure:**
|
|
94
|
+
- Without Job Name: `queue:{queueId}`
|
|
95
|
+
- With Job Name: `queue:{queueId}:{jobName}` (allows multiple independent queues per workflow)
|
|
96
|
+
|
|
97
|
+
Output:
|
|
98
|
+
|
|
99
|
+
```json
|
|
100
|
+
{ "queueId": "workflow-123", "jobName": "user-456", "position": 3, "timeoutSec": 60, "ttl": 88 }
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 5) Redis Queue Trigger
|
|
104
|
+
|
|
105
|
+
Process jobs from a Redis-based queue. This is a trigger node that starts a workflow for each job.
|
|
106
|
+
|
|
107
|
+
- **Queue ID**: which queue to consume from (leave empty to use current workflow ID)
|
|
108
|
+
- **Job Name**: optional name to match the Job Name from Redis Queue Add (for grouped queues)
|
|
109
|
+
- **BLPOP Timeout (seconds)**: timeout for blocking pop operation (default: 30)
|
|
110
|
+
|
|
111
|
+
Uses `BLPOP` for efficient, event-driven job consumption (no active polling).
|
|
112
|
+
|
|
113
|
+
Emitted item:
|
|
114
|
+
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"data": { "your": "job data" },
|
|
118
|
+
"index": 1,
|
|
119
|
+
"queueId": "workflow-123",
|
|
120
|
+
"jobName": "user-456",
|
|
121
|
+
"uniqueJobId": "workflow-123-1735308000000-1"
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
- `data`: the job payload
|
|
126
|
+
- `index`: position in the current queue "wave" (resets to 1 when queue empties)
|
|
127
|
+
- `queueId`: queue identifier (workflow ID if not specified)
|
|
128
|
+
- `jobName`: optional job group name (null if not used)
|
|
129
|
+
- `uniqueJobId`: unique identifier for this specific job execution
|
|
130
|
+
|
|
131
|
+
### 6) Redis Queue Complete
|
|
132
|
+
|
|
133
|
+
Mark a job as complete and check if it was the last job in the queue. Place this node at the end of your queue processing workflow.
|
|
134
|
+
|
|
135
|
+
- **Queue ID**: from trigger (default: `={{ $json.queueId }}`)
|
|
136
|
+
- **Job Name**: optional, from trigger (default: `={{ $json.jobName }}`)
|
|
137
|
+
- **Unique Job ID**: from trigger (default: `={{ $json.uniqueJobId }}`)
|
|
138
|
+
|
|
139
|
+
Output:
|
|
140
|
+
|
|
141
|
+
```json
|
|
142
|
+
{
|
|
143
|
+
"data": { "your": "job data" },
|
|
144
|
+
"index": 1,
|
|
145
|
+
"isLast": true,
|
|
146
|
+
"queueId": "workflow-123",
|
|
147
|
+
"jobName": "user-456",
|
|
148
|
+
"uniqueJobId": "workflow-123-1735308000000-1"
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
- `isLast`: `true` if this was the last job in the queue (queue is now empty)
|
|
153
|
+
- When `isLast` is `true`, the index counter is reset for the next "wave" of jobs
|
|
154
|
+
|
|
81
155
|
## Quick Start
|
|
82
156
|
|
|
157
|
+
### Cache Example
|
|
83
158
|
1. Create Redis credentials in n8n
|
|
84
159
|
2. Redis Cache (Write): set key, payload JSON, TTL
|
|
85
160
|
3. Redis Cache (Read): set same key
|
|
161
|
+
|
|
162
|
+
### Streams Example
|
|
86
163
|
4. Redis Pub: set stream key and payload
|
|
87
|
-
5. Redis
|
|
164
|
+
5. Redis Sub Trigger: set same stream key, optional Allowed Stale
|
|
165
|
+
|
|
166
|
+
### Queue Example
|
|
167
|
+
6. **Workflow 1 (Producer)**: Schedule Trigger → Redis Queue Add (queueId: "emails")
|
|
168
|
+
7. **Workflow 2 (Consumer)**: Redis Queue Trigger (queueId: "emails") → Send Email → Redis Queue Complete → IF node (check `isLast`) → Send Summary Email (if last)
|
|
88
169
|
|
|
89
170
|
## Usage Examples
|
|
90
171
|
|
|
91
|
-
- Redis Cache (Write JSON):
|
|
172
|
+
- Redis Cache (Write YAML / JSON):
|
|
92
173
|
- Mode: Write
|
|
93
174
|
- Key: `cache:user:42`
|
|
94
|
-
- Payload Type: JSON
|
|
175
|
+
- Payload Type: YAML / JSON
|
|
95
176
|
- Data: `{ "id": 42, "name": "Ada" }`
|
|
96
177
|
- TTL Unit: hours, TTL Value: 24
|
|
97
178
|
|
|
@@ -99,15 +180,36 @@ Emitted item example:
|
|
|
99
180
|
- Mode: Read
|
|
100
181
|
- Key: `cache:user:42`
|
|
101
182
|
|
|
102
|
-
- Redis Pub (JSON):
|
|
183
|
+
- Redis Pub (YAML / JSON):
|
|
103
184
|
- Stream Key: `my-service:main`
|
|
104
|
-
- Payload Mode: JSON
|
|
105
|
-
- Payload: leave empty to send the incoming item as JSON
|
|
185
|
+
- Payload Mode: YAML / JSON
|
|
186
|
+
- Payload: leave empty to send the incoming item as YAML/JSON
|
|
106
187
|
|
|
107
|
-
- Redis
|
|
188
|
+
- Redis Sub Trigger:
|
|
108
189
|
- Stream Key: `my-service:main`
|
|
109
190
|
- Allowed Stale (Seconds): `0` for only new entries
|
|
110
191
|
|
|
192
|
+
- Redis Queue (Producer Workflow):
|
|
193
|
+
- Redis Queue Add:
|
|
194
|
+
- Queue ID: `` (empty - uses workflow ID)
|
|
195
|
+
- Job Name: `={{ $json.userId }}` (separate queue per user)
|
|
196
|
+
- Data: `{ "url": "https://example.com/image.jpg", "format": "webp" }`
|
|
197
|
+
- Timeout: `120` seconds
|
|
198
|
+
|
|
199
|
+
- Redis Queue (Consumer Workflow):
|
|
200
|
+
- Redis Queue Trigger:
|
|
201
|
+
- Queue ID: `` (empty - uses workflow ID)
|
|
202
|
+
- Job Name: `={{ $json.userId }}` (must match producer)
|
|
203
|
+
- BLPOP Timeout: `30` seconds
|
|
204
|
+
- → Process Image node
|
|
205
|
+
- → Redis Queue Complete:
|
|
206
|
+
- Queue ID: `={{ $json.queueId }}`
|
|
207
|
+
- Job Name: `={{ $json.jobName }}`
|
|
208
|
+
- Unique Job ID: `={{ $json.uniqueJobId }}`
|
|
209
|
+
- → IF node: `={{ $json.result.isLast }}`
|
|
210
|
+
- True → Send notification "All images processed for user"
|
|
211
|
+
- False → End
|
|
212
|
+
|
|
111
213
|
## Development
|
|
112
214
|
|
|
113
215
|
- Install deps: `pnpm install`
|
|
@@ -115,6 +217,45 @@ Emitted item example:
|
|
|
115
217
|
- Build: `pnpm build`
|
|
116
218
|
- Dev (watch): `pnpm dev` or `pnpm run build:watch`
|
|
117
219
|
|
|
220
|
+
### Local Redis (for tests)
|
|
221
|
+
|
|
222
|
+
This package includes a ready-to-use `compose.yaml` that starts:
|
|
223
|
+
|
|
224
|
+
- `redis` on `localhost:6379`
|
|
225
|
+
- `redisinsight` UI on `http://localhost:5540`
|
|
226
|
+
|
|
227
|
+
Start containers:
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
docker compose -f compose.yaml up -d
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Stop containers:
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
docker compose -f compose.yaml down
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Redis connection params (matching `compose.yaml`):
|
|
240
|
+
|
|
241
|
+
- Host: `localhost`
|
|
242
|
+
- Port: `6379`
|
|
243
|
+
- Username: (empty)
|
|
244
|
+
- Password: (empty)
|
|
245
|
+
- TLS: `false`
|
|
246
|
+
- DB Index: `0`
|
|
247
|
+
|
|
248
|
+
Quick connectivity check:
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
redis-cli -h localhost -p 6379 ping
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
If you run n8n in Docker, use the correct host from the n8n container perspective:
|
|
255
|
+
|
|
256
|
+
- If n8n is started from the same Compose project/network, use the service name `redis` as host.
|
|
257
|
+
- If n8n runs in a separate Compose project, either connect the networks or expose Redis and use the host that is reachable from n8n.
|
|
258
|
+
|
|
118
259
|
Before publishing, the CLI will run `n8n-node prerelease` automatically.
|
|
119
260
|
|
|
120
261
|
Publishing options:
|
|
@@ -68,7 +68,8 @@ class BozonxRedisCache {
|
|
|
68
68
|
{
|
|
69
69
|
displayName: 'Data (YAML / JSON)',
|
|
70
70
|
name: 'dataYamlJson',
|
|
71
|
-
type: '
|
|
71
|
+
type: 'string',
|
|
72
|
+
typeOptions: { rows: 8 },
|
|
72
73
|
default: '',
|
|
73
74
|
placeholder: 'foo: bar\ncount: 42\n# or JSON: { "foo": "bar" }',
|
|
74
75
|
description: 'Data in YAML or JSON format. If a string is provided, it will first be parsed as YAML, then as JSON. If an expression returns a non-string value, it will be serialized to JSON.',
|
|
@@ -153,12 +154,13 @@ class BozonxRedisCache {
|
|
|
153
154
|
displayOptions: { show: { valueType: ['string'] } },
|
|
154
155
|
},
|
|
155
156
|
{
|
|
156
|
-
displayName: 'JSON
|
|
157
|
+
displayName: 'Value (YAML / JSON)',
|
|
157
158
|
name: 'valueJson',
|
|
158
|
-
type: '
|
|
159
|
+
type: 'string',
|
|
160
|
+
typeOptions: { rows: 8 },
|
|
159
161
|
default: '',
|
|
160
|
-
placeholder:
|
|
161
|
-
description: '
|
|
162
|
+
placeholder: 'foo: bar\ncount: 42\n# or JSON: { "foo": "bar" }',
|
|
163
|
+
description: 'Data in YAML or JSON format. If a string is provided, it will first be parsed as YAML, then as JSON. If an expression returns a non-string value, it will be serialized to JSON.',
|
|
162
164
|
displayOptions: { show: { valueType: ['json'] } },
|
|
163
165
|
},
|
|
164
166
|
],
|
|
@@ -312,9 +314,22 @@ class BozonxRedisCache {
|
|
|
312
314
|
}
|
|
313
315
|
case 'json': {
|
|
314
316
|
const raw = pair.valueJson;
|
|
315
|
-
if (raw === undefined) {
|
|
317
|
+
if (raw === undefined || raw === '') {
|
|
316
318
|
value = null;
|
|
317
319
|
}
|
|
320
|
+
else if (typeof raw === 'string') {
|
|
321
|
+
try {
|
|
322
|
+
value = (0, js_yaml_1.load)(raw);
|
|
323
|
+
}
|
|
324
|
+
catch {
|
|
325
|
+
try {
|
|
326
|
+
value = JSON.parse(raw);
|
|
327
|
+
}
|
|
328
|
+
catch (jsonError) {
|
|
329
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Invalid YAML or JSON provided in field "${k}": ${jsonError.message}`, { itemIndex: i });
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
318
333
|
else {
|
|
319
334
|
value = raw;
|
|
320
335
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BozonxRedisCache.node.js","sourceRoot":"","sources":["../../../nodes/RedisCache/BozonxRedisCache.node.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BozonxRedisCache.node.js","sourceRoot":"","sources":["../../../nodes/RedisCache/BozonxRedisCache.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,20 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.ttlToSeconds = ttlToSeconds;
|
|
37
37
|
exports.createRedisClientConnected = createRedisClientConnected;
|
|
38
|
+
const timers_1 = require("timers");
|
|
39
|
+
const REDIS_CONNECT_DEADLINE_MS = 10000;
|
|
40
|
+
function withTimeout(promise, timeoutMs, message) {
|
|
41
|
+
let timeout;
|
|
42
|
+
return Promise.race([
|
|
43
|
+
promise,
|
|
44
|
+
new Promise((_, reject) => {
|
|
45
|
+
timeout = (0, timers_1.setTimeout)(() => reject(new Error(message)), timeoutMs);
|
|
46
|
+
}),
|
|
47
|
+
]).finally(() => {
|
|
48
|
+
if (timeout)
|
|
49
|
+
(0, timers_1.clearTimeout)(timeout);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
38
52
|
function ttlToSeconds(ttl, unit) {
|
|
39
53
|
if (!ttl || ttl <= 0)
|
|
40
54
|
return 0;
|
|
@@ -64,11 +78,15 @@ async function createRedisClientConnected(options) {
|
|
|
64
78
|
const { createClient } = await Promise.resolve().then(() => __importStar(require('redis')));
|
|
65
79
|
const clientImpl = createClient({
|
|
66
80
|
url,
|
|
81
|
+
disableOfflineQueue: true,
|
|
67
82
|
socket: {
|
|
68
83
|
connectTimeout: 10000,
|
|
84
|
+
reconnectStrategy: (retries) => {
|
|
85
|
+
return Math.min(retries * 100, 3000);
|
|
86
|
+
},
|
|
69
87
|
},
|
|
70
88
|
});
|
|
71
|
-
await clientImpl.connect();
|
|
89
|
+
await withTimeout(clientImpl.connect(), REDIS_CONNECT_DEADLINE_MS, `Redis connect timeout after ${REDIS_CONNECT_DEADLINE_MS}ms`);
|
|
72
90
|
const client = {
|
|
73
91
|
async connect() { },
|
|
74
92
|
async quit() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redisClient.js","sourceRoot":"","sources":["../../../nodes/RedisCache/redisClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"redisClient.js","sourceRoot":"","sources":["../../../nodes/RedisCache/redisClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type IExecuteFunctions, type INodeExecutionData, type INodeType, type INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class BozonxRedisQueueComplete implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BozonxRedisQueueComplete = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const redisClient_1 = require("./redisClient");
|
|
6
|
+
class BozonxRedisQueueComplete {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.description = {
|
|
9
|
+
displayName: 'Redis Queue Complete',
|
|
10
|
+
name: 'bozonxRedisQueueComplete',
|
|
11
|
+
group: ['transform'],
|
|
12
|
+
version: 1,
|
|
13
|
+
description: 'Release queue lock and check if it was the last job',
|
|
14
|
+
defaults: { name: 'Redis Queue Complete' },
|
|
15
|
+
icon: 'file:redis-queue-complete.svg',
|
|
16
|
+
inputs: ['main'],
|
|
17
|
+
outputs: ['main'],
|
|
18
|
+
credentials: [
|
|
19
|
+
{
|
|
20
|
+
name: 'bozonxRedis',
|
|
21
|
+
required: true,
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
properties: [
|
|
25
|
+
{
|
|
26
|
+
displayName: 'Queue ID',
|
|
27
|
+
name: 'queueId',
|
|
28
|
+
type: 'string',
|
|
29
|
+
default: '={{ $json.queueId }}',
|
|
30
|
+
required: true,
|
|
31
|
+
description: 'Queue identifier from the trigger node',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
displayName: 'Job Name',
|
|
35
|
+
name: 'jobName',
|
|
36
|
+
type: 'string',
|
|
37
|
+
default: '={{ $json.jobName }}',
|
|
38
|
+
description: 'Optional job name from the trigger node (for grouped queues)',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
displayName: 'Job ID',
|
|
42
|
+
name: 'jobId',
|
|
43
|
+
type: 'string',
|
|
44
|
+
default: '={{ $json.jobId }}',
|
|
45
|
+
required: true,
|
|
46
|
+
description: 'Unique job identifier from the trigger node',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
displayName: 'Include Other Input Fields',
|
|
50
|
+
name: 'includeInputFields',
|
|
51
|
+
type: 'boolean',
|
|
52
|
+
default: false,
|
|
53
|
+
description: 'Whether to copy all input data to the output. When enabled, the node result will be placed in a "result" field.',
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
usableAsTool: true,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
async execute() {
|
|
60
|
+
var _a, _b;
|
|
61
|
+
const items = this.getInputData();
|
|
62
|
+
const returnData = [];
|
|
63
|
+
const creds = await this.getCredentials('bozonxRedis');
|
|
64
|
+
const host = (creds === null || creds === void 0 ? void 0 : creds.host) || 'localhost';
|
|
65
|
+
const port = (_a = creds === null || creds === void 0 ? void 0 : creds.port) !== null && _a !== void 0 ? _a : 6379;
|
|
66
|
+
const username = (creds === null || creds === void 0 ? void 0 : creds.username) || '';
|
|
67
|
+
const password = (creds === null || creds === void 0 ? void 0 : creds.password) || '';
|
|
68
|
+
const tls = (creds === null || creds === void 0 ? void 0 : creds.tls) || false;
|
|
69
|
+
const db = (_b = creds === null || creds === void 0 ? void 0 : creds.db) !== null && _b !== void 0 ? _b : 0;
|
|
70
|
+
const client = await (0, redisClient_1.getRedisClientConnected)({ host, port, username, password, tls, db });
|
|
71
|
+
for (let i = 0; i < items.length; i++) {
|
|
72
|
+
try {
|
|
73
|
+
const queueId = String(this.getNodeParameter('queueId', i) || '').trim();
|
|
74
|
+
const jobName = String(this.getNodeParameter('jobName', i, '') || '').trim();
|
|
75
|
+
const jobId = String(this.getNodeParameter('jobId', i) || '').trim();
|
|
76
|
+
const includeInputFields = this.getNodeParameter('includeInputFields', i, false);
|
|
77
|
+
if (!queueId) {
|
|
78
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Queue ID is required', { itemIndex: i });
|
|
79
|
+
}
|
|
80
|
+
if (!jobId) {
|
|
81
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Job ID is required', { itemIndex: i });
|
|
82
|
+
}
|
|
83
|
+
const queueKey = jobName ? `queue:${queueId}:${jobName}` : `queue:${queueId}`;
|
|
84
|
+
const lockKey = jobName ? `queue:${queueId}:${jobName}:lock` : `queue:${queueId}:lock`;
|
|
85
|
+
const responseKey = `response:${queueId}:${jobId}`;
|
|
86
|
+
const c = client;
|
|
87
|
+
const queueLength = (await c.sendCommand(['LLEN', queueKey]));
|
|
88
|
+
const isLast = queueLength === 0;
|
|
89
|
+
const inputData = items[i].json;
|
|
90
|
+
const responsePayload = {
|
|
91
|
+
data: inputData,
|
|
92
|
+
isLast,
|
|
93
|
+
};
|
|
94
|
+
const responseData = JSON.stringify(responsePayload);
|
|
95
|
+
await c.sendCommand(['RPUSH', responseKey, responseData]);
|
|
96
|
+
await c.sendCommand(['EXPIRE', responseKey, '60']);
|
|
97
|
+
await c.sendCommand(['DEL', lockKey]);
|
|
98
|
+
const result = {
|
|
99
|
+
data: inputData,
|
|
100
|
+
isLast,
|
|
101
|
+
queueId,
|
|
102
|
+
jobName: jobName || null,
|
|
103
|
+
jobId,
|
|
104
|
+
};
|
|
105
|
+
returnData.push({
|
|
106
|
+
json: includeInputFields ? { ...items[i].json, result } : { result },
|
|
107
|
+
pairedItem: { item: i },
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
if (this.continueOnFail()) {
|
|
112
|
+
returnData.push({
|
|
113
|
+
json: { error: error.message },
|
|
114
|
+
pairedItem: { item: i },
|
|
115
|
+
});
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (error instanceof n8n_workflow_1.NodeOperationError) {
|
|
119
|
+
throw error;
|
|
120
|
+
}
|
|
121
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex: i });
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return [returnData];
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
exports.BozonxRedisQueueComplete = BozonxRedisQueueComplete;
|
|
128
|
+
//# sourceMappingURL=BozonxRedisQueueComplete.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BozonxRedisQueueComplete.node.js","sourceRoot":"","sources":["../../../nodes/RedisQueueComplete/BozonxRedisQueueComplete.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<rect x="3" y="3" width="18" height="18" rx="2" ry="2" fill="#DC382D" stroke="none"/>
|
|
3
|
+
<path d="M9 12l2 2 4-4" stroke="white" stroke-width="2"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getRedisClientConnected = getRedisClientConnected;
|
|
37
|
+
const timers_1 = require("timers");
|
|
38
|
+
const REDIS_CONNECT_DEADLINE_MS = 10000;
|
|
39
|
+
function withTimeout(promise, timeoutMs, message) {
|
|
40
|
+
let timeout;
|
|
41
|
+
return Promise.race([
|
|
42
|
+
promise,
|
|
43
|
+
new Promise((_, reject) => {
|
|
44
|
+
timeout = (0, timers_1.setTimeout)(() => reject(new Error(message)), timeoutMs);
|
|
45
|
+
}),
|
|
46
|
+
]).finally(() => {
|
|
47
|
+
if (timeout)
|
|
48
|
+
(0, timers_1.clearTimeout)(timeout);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
const clients = new Map();
|
|
52
|
+
function buildUrl(opts) {
|
|
53
|
+
var _a;
|
|
54
|
+
const proto = opts.tls ? 'rediss' : 'redis';
|
|
55
|
+
const authPart = opts.username
|
|
56
|
+
? `${encodeURIComponent(opts.username)}:${encodeURIComponent((_a = opts.password) !== null && _a !== void 0 ? _a : '')}@`
|
|
57
|
+
: opts.password
|
|
58
|
+
? `:${encodeURIComponent(opts.password)}@`
|
|
59
|
+
: '';
|
|
60
|
+
const dbPath = typeof opts.db === 'number' ? `/${opts.db}` : '';
|
|
61
|
+
return `${proto}://${authPart}${opts.host}:${opts.port}${dbPath}`;
|
|
62
|
+
}
|
|
63
|
+
async function getRedisClientConnected(opts) {
|
|
64
|
+
const url = buildUrl(opts);
|
|
65
|
+
const cached = clients.get(url);
|
|
66
|
+
if (cached) {
|
|
67
|
+
if (cached.isOpen)
|
|
68
|
+
return cached;
|
|
69
|
+
try {
|
|
70
|
+
await withTimeout(cached.connect(), REDIS_CONNECT_DEADLINE_MS, `Redis reconnect timeout after ${REDIS_CONNECT_DEADLINE_MS}ms`);
|
|
71
|
+
return cached;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const { createClient } = await Promise.resolve().then(() => __importStar(require('redis')));
|
|
77
|
+
const client = createClient({
|
|
78
|
+
url,
|
|
79
|
+
disableOfflineQueue: true,
|
|
80
|
+
socket: {
|
|
81
|
+
connectTimeout: 10000,
|
|
82
|
+
reconnectStrategy: (retries) => {
|
|
83
|
+
return Math.min(retries * 100, 3000);
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
client.on('error', () => {
|
|
88
|
+
});
|
|
89
|
+
await withTimeout(client.connect(), REDIS_CONNECT_DEADLINE_MS, `Redis connect timeout after ${REDIS_CONNECT_DEADLINE_MS}ms`);
|
|
90
|
+
clients.set(url, client);
|
|
91
|
+
return client;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=redisClient.js.map
|