jerkjs 2.5.6 → 2.6.1
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/CHANGELOG.md +167 -79
- package/README.md +134 -146
- package/RESULTADOS_WAF.md +63 -0
- package/doc-2.5/ADMIN_EXTENSION_COMMANDS_MANUAL.md +261 -0
- package/doc-2.5/ADMIN_EXTENSION_HOOK_EXAMPLE.md +28 -0
- package/doc-2.5/ADMIN_EXTENSION_INTEGRATION_MANUAL.md +232 -0
- package/doc-2.5/CACHE_SYSTEM_MAP.md +206 -0
- package/doc-2.5/MANUAL_MODULOS_ADMIN.md +287 -0
- package/doc-2.5/QUEUE_CLI_MODULE_MANUAL.md +289 -0
- package/doc-2.5/QUEUE_SYSTEM_MANUAL.md +320 -0
- package/doc-2.5/ROUTE_CACHE_MODULE_MANUAL.md +205 -0
- package/doc-2.5/WAF_MODULE_MANUAL.md +229 -0
- package/index.js +19 -4
- package/jerk-admin-client/README.md +69 -0
- package/jerk-admin-client/package.json +23 -0
- package/jerk-admin-client.js +257 -0
- package/lib/admin/AdminExtension.js +491 -0
- package/lib/admin/ModuleLoader.js +77 -0
- package/lib/admin/config.js +21 -0
- package/lib/admin/modules/CacheModule.js +145 -0
- package/lib/admin/modules/ControllerGeneratorModule.js +414 -0
- package/lib/admin/modules/QueueManagementModule.js +265 -0
- package/lib/admin/modules/RouteCacheModule.js +227 -0
- package/lib/admin/modules/RouteManagerModule.js +468 -0
- package/lib/admin/modules/STATS_MODULE_README.md +113 -0
- package/lib/admin/modules/StatsModule.js +140 -0
- package/lib/admin/modules/SystemModule.js +140 -0
- package/lib/admin/modules/TimeModule.js +95 -0
- package/lib/admin/modules/ViewCacheStatsModule.js +92 -0
- package/lib/admin/modules/WAFModule.js +737 -0
- package/lib/cache/CacheHooks.js +141 -0
- package/lib/core/server.js +223 -77
- package/lib/middleware/firewall.js +112 -17
- package/lib/mvc/viewEngine.js +89 -5
- package/lib/queue/GlobalQueueStorage.js +38 -0
- package/lib/queue/QueueSystem.js +451 -0
- package/lib/queue/admin_example.js +114 -0
- package/lib/queue/example.js +268 -0
- package/lib/queue/integration.js +109 -0
- package/lib/router/RouteMatcher.js +242 -54
- package/lib/utils/globalStats.js +16 -0
- package/lib/utils/globalViewCacheInfo.js +16 -0
- package/lib/utils/globalWAFStats.js +54 -0
- package/package.json +2 -2
- package/test-colors.js +46 -0
- package/test-help-alias.js +31 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ejemplo de uso del sistema de colas para el framework JERK
|
|
3
|
+
* Archivo de ejemplo: queue/example.js
|
|
4
|
+
* Demostración con 3 colas distintas
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// Importar el sistema de colas
|
|
8
|
+
const QueueIntegration = require('./integration');
|
|
9
|
+
const { hooks } = require('../../index.js'); // Suponiendo que se está usando dentro del framework
|
|
10
|
+
|
|
11
|
+
// Crear una instancia de la integración de colas
|
|
12
|
+
const queueIntegration = new QueueIntegration();
|
|
13
|
+
const queueSystem = queueIntegration.getQueueSystem();
|
|
14
|
+
|
|
15
|
+
// Ejemplo de tarea para la cola de procesamiento de imágenes
|
|
16
|
+
function tareaProcesamientoImagen(datos, taskObj) {
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
console.log(`[IMAGEN] Procesando imagen: ${datos.nombreArchivo}`);
|
|
19
|
+
|
|
20
|
+
// Simular un proceso de procesamiento de imagen
|
|
21
|
+
setTimeout(() => {
|
|
22
|
+
if (Math.random() < 0.2) { // 20% de probabilidad de fallo
|
|
23
|
+
console.error(`[IMAGEN] Falló el procesamiento de: ${datos.nombreArchivo}`);
|
|
24
|
+
reject(new Error(`Error procesando imagen: ${datos.nombreArchivo}`));
|
|
25
|
+
} else {
|
|
26
|
+
console.log(`[IMAGEN] Imagen procesada exitosamente: ${datos.nombreArchivo}`);
|
|
27
|
+
resolve(`Imagen ${datos.nombreArchivo} procesada con éxito`);
|
|
28
|
+
}
|
|
29
|
+
}, 2000);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Ejemplo de tarea para la cola de envío de correos
|
|
34
|
+
function tareaEnvioCorreo(datos, taskObj) {
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
console.log(`[CORREO] Enviando correo a: ${datos.destinatario}`);
|
|
37
|
+
|
|
38
|
+
// Simular un proceso de envío de correo
|
|
39
|
+
setTimeout(() => {
|
|
40
|
+
if (Math.random() < 0.15) { // 15% de probabilidad de fallo
|
|
41
|
+
console.error(`[CORREO] Falló el envío a: ${datos.destinatario}`);
|
|
42
|
+
reject(new Error(`Error enviando correo a: ${datos.destinatario}`));
|
|
43
|
+
} else {
|
|
44
|
+
console.log(`[CORREO] Correo enviado exitosamente a: ${datos.destinatario}`);
|
|
45
|
+
resolve(`Correo enviado a ${datos.destinatario} con éxito`);
|
|
46
|
+
}
|
|
47
|
+
}, 1500);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Ejemplo de tarea para la cola de procesamiento de pagos
|
|
52
|
+
function tareaProcesamientoPago(datos, taskObj) {
|
|
53
|
+
return new Promise((resolve, reject) => {
|
|
54
|
+
console.log(`[PAGO] Procesando pago de: $${datos.monto} para ${datos.usuario}`);
|
|
55
|
+
|
|
56
|
+
// Simular un proceso de procesamiento de pago
|
|
57
|
+
setTimeout(() => {
|
|
58
|
+
if (Math.random() < 0.25) { // 25% de probabilidad de fallo
|
|
59
|
+
console.error(`[PAGO] Falló el procesamiento de pago para: ${datos.usuario}`);
|
|
60
|
+
reject(new Error(`Error procesando pago para: ${datos.usuario}`));
|
|
61
|
+
} else {
|
|
62
|
+
console.log(`[PAGO] Pago procesado exitosamente para: ${datos.usuario}`);
|
|
63
|
+
resolve(`Pago de $${datos.monto} para ${datos.usuario} procesado con éxito`);
|
|
64
|
+
}
|
|
65
|
+
}, 3000);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Configurar la cola de procesamiento de imágenes con hooks personalizados
|
|
70
|
+
function setupColaImagenes() {
|
|
71
|
+
const HookSystem = require('../../lib/core/hooks');
|
|
72
|
+
const imagenHooks = new HookSystem();
|
|
73
|
+
|
|
74
|
+
// Hook para personalizar la lógica de procesamiento de tareas de imagen
|
|
75
|
+
imagenHooks.addAction('queue_execute_task', (task, queueName, taskObj) => {
|
|
76
|
+
console.log(`[IMAGEN] Preparando para procesar tarea de imagen: ${taskObj.id}`);
|
|
77
|
+
// Aquí puedes modificar la tarea o agregar lógica personalizada
|
|
78
|
+
const wrappedTask = async (datos, taskObj) => {
|
|
79
|
+
console.log(`[IMAGEN] Iniciando ejecución de tarea de imagen: ${taskObj.id} con datos:`, datos);
|
|
80
|
+
try {
|
|
81
|
+
const result = await task(datos, taskObj);
|
|
82
|
+
console.log(`[IMAGEN] Tarea de imagen completada: ${taskObj.id}`);
|
|
83
|
+
return result;
|
|
84
|
+
} catch (error) {
|
|
85
|
+
console.log(`[IMAGEN] Error en tarea de imagen: ${taskObj.id} - ${error.message}`);
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
return wrappedTask;
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// Hook para manejar la lógica de fallback para tareas de imagen
|
|
93
|
+
imagenHooks.addAction('queue_task_fallback', (queueName, task, error) => {
|
|
94
|
+
console.log(`[IMAGEN] Ejecutando lógica de fallback para tarea de imagen:`, error.message);
|
|
95
|
+
// Aquí puedes implementar la lógica de fallback personalizada para imágenes
|
|
96
|
+
console.log(`[IMAGEN] Guardando información de error para procesamiento posterior...`);
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
// Crear la cola de imágenes con los hooks personalizados
|
|
100
|
+
queueIntegration.createQueue('imagenes', {
|
|
101
|
+
concurrency: 3,
|
|
102
|
+
retryAttempts: 2,
|
|
103
|
+
retryDelay: 1000
|
|
104
|
+
}, imagenHooks);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Configurar la cola de envío de correos con hooks personalizados
|
|
108
|
+
function setupColaCorreos() {
|
|
109
|
+
const HookSystem = require('../../lib/core/hooks');
|
|
110
|
+
const correoHooks = new HookSystem();
|
|
111
|
+
|
|
112
|
+
// Hook para personalizar la lógica de procesamiento de tareas de correo
|
|
113
|
+
correoHooks.addAction('queue_execute_task', (task, queueName, taskObj) => {
|
|
114
|
+
console.log(`[CORREO] Preparando para enviar correo: ${taskObj.id}`);
|
|
115
|
+
// Aquí puedes modificar la tarea o agregar lógica personalizada
|
|
116
|
+
const wrappedTask = async (datos, taskObj) => {
|
|
117
|
+
console.log(`[CORREO] Iniciando ejecución de tarea de correo: ${taskObj.id} con datos:`, datos);
|
|
118
|
+
try {
|
|
119
|
+
const result = await task(datos, taskObj);
|
|
120
|
+
console.log(`[CORREO] Tarea de correo completada: ${taskObj.id}`);
|
|
121
|
+
return result;
|
|
122
|
+
} catch (error) {
|
|
123
|
+
console.log(`[CORREO] Error en tarea de correo: ${taskObj.id} - ${error.message}`);
|
|
124
|
+
throw error;
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
return wrappedTask;
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
// Hook para manejar la lógica de fallback para tareas de correo
|
|
131
|
+
correoHooks.addAction('queue_task_fallback', (queueName, task, error) => {
|
|
132
|
+
console.log(`[CORREO] Ejecutando lógica de fallback para tarea de correo:`, error.message);
|
|
133
|
+
// Aquí puedes implementar la lógica de fallback personalizada para correos
|
|
134
|
+
console.log(`[CORREO] Agregando destinatario a lista de reintento...`);
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
// Crear la cola de correos con los hooks personalizados
|
|
138
|
+
queueIntegration.createQueue('correos', {
|
|
139
|
+
concurrency: 2,
|
|
140
|
+
retryAttempts: 3,
|
|
141
|
+
retryDelay: 2000
|
|
142
|
+
}, correoHooks);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Configurar la cola de procesamiento de pagos con hooks personalizados
|
|
146
|
+
function setupColaPagos() {
|
|
147
|
+
const HookSystem = require('../../lib/core/hooks');
|
|
148
|
+
const pagoHooks = new HookSystem();
|
|
149
|
+
|
|
150
|
+
// Hook para personalizar la lógica de procesamiento de tareas de pago
|
|
151
|
+
pagoHooks.addAction('queue_execute_task', (task, queueName, taskObj) => {
|
|
152
|
+
console.log(`[PAGO] Preparando para procesar pago: ${taskObj.id}`);
|
|
153
|
+
// Aquí puedes modificar la tarea o agregar lógica personalizada
|
|
154
|
+
const wrappedTask = async (datos, taskObj) => {
|
|
155
|
+
console.log(`[PAGO] Iniciando ejecución de tarea de pago: ${taskObj.id} con datos:`, datos);
|
|
156
|
+
try {
|
|
157
|
+
const result = await task(datos, taskObj);
|
|
158
|
+
console.log(`[PAGO] Tarea de pago completada: ${taskObj.id}`);
|
|
159
|
+
return result;
|
|
160
|
+
} catch (error) {
|
|
161
|
+
console.log(`[PAGO] Error en tarea de pago: ${taskObj.id} - ${error.message}`);
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
return wrappedTask;
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
// Hook para manejar la lógica de fallback para tareas de pago
|
|
169
|
+
pagoHooks.addAction('queue_task_fallback', (queueName, task, error) => {
|
|
170
|
+
console.log(`[PAGO] Ejecutando lógica de fallback para tarea de pago:`, error.message);
|
|
171
|
+
// Aquí puedes implementar la lógica de fallback personalizada para pagos
|
|
172
|
+
console.log(`[PAGO] Marcando transacción como pendiente para revisión manual...`);
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
// Crear la cola de pagos con los hooks personalizados
|
|
176
|
+
queueIntegration.createQueue('pagos', {
|
|
177
|
+
concurrency: 1,
|
|
178
|
+
retryAttempts: 5,
|
|
179
|
+
retryDelay: 3000
|
|
180
|
+
}, pagoHooks);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// Ejemplo de uso con 3 colas distintas
|
|
184
|
+
function ejemploDeUso() {
|
|
185
|
+
// Configurar las 3 colas con sus hooks personalizados
|
|
186
|
+
setupColaImagenes();
|
|
187
|
+
setupColaCorreos();
|
|
188
|
+
setupColaPagos();
|
|
189
|
+
|
|
190
|
+
// Agregar tareas a la cola de imágenes
|
|
191
|
+
console.log("\nAgregando tareas a la cola de imágenes...");
|
|
192
|
+
for (let i = 0; i < 5; i++) {
|
|
193
|
+
const taskId = queueIntegration.addTask('imagenes', tareaProcesamientoImagen, {
|
|
194
|
+
id: i,
|
|
195
|
+
nombreArchivo: `imagen_${i}.jpg`,
|
|
196
|
+
tamano: `${Math.floor(Math.random() * 10) + 1}MB`
|
|
197
|
+
}, i); // Usar el índice como prioridad (0 es la más alta)
|
|
198
|
+
|
|
199
|
+
console.log(`Tarea de imagen agregada con ID: ${taskId}`);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// Agregar tareas a la cola de correos
|
|
203
|
+
console.log("\nAgregando tareas a la cola de correos...");
|
|
204
|
+
const destinatarios = ['juan@ejemplo.com', 'maria@ejemplo.com', 'pedro@ejemplo.com', 'ana@ejemplo.com', 'luis@ejemplo.com'];
|
|
205
|
+
for (let i = 0; i < destinatarios.length; i++) {
|
|
206
|
+
const taskId = queueIntegration.addTask('correos', tareaEnvioCorreo, {
|
|
207
|
+
id: i,
|
|
208
|
+
destinatario: destinatarios[i],
|
|
209
|
+
asunto: `Mensaje de prueba #${i}`
|
|
210
|
+
}, i);
|
|
211
|
+
|
|
212
|
+
console.log(`Tarea de correo agregada con ID: ${taskId}`);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// Agregar tareas a la cola de pagos
|
|
216
|
+
console.log("\nAgregando tareas a la cola de pagos...");
|
|
217
|
+
const usuarios = ['Cliente A', 'Cliente B', 'Cliente C', 'Cliente D', 'Cliente E'];
|
|
218
|
+
for (let i = 0; i < usuarios.length; i++) {
|
|
219
|
+
const taskId = queueIntegration.addTask('pagos', tareaProcesamientoPago, {
|
|
220
|
+
id: i,
|
|
221
|
+
usuario: usuarios[i],
|
|
222
|
+
monto: (Math.floor(Math.random() * 1000) + 100),
|
|
223
|
+
metodo: i % 2 === 0 ? 'Tarjeta' : 'PayPal'
|
|
224
|
+
}, i);
|
|
225
|
+
|
|
226
|
+
console.log(`Tarea de pago agregada con ID: ${taskId}`);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// Iniciar el procesamiento de tareas
|
|
230
|
+
console.log("\nIniciando el sistema de colas...");
|
|
231
|
+
queueIntegration.start();
|
|
232
|
+
|
|
233
|
+
// Mostrar estado periódicamente
|
|
234
|
+
setInterval(() => {
|
|
235
|
+
console.log('\n--- Estado del sistema de colas ---');
|
|
236
|
+
const status = queueIntegration.getStatus();
|
|
237
|
+
for (const [queueName, queueStatus] of Object.entries(status)) {
|
|
238
|
+
console.log(`${queueName}: Pendientes=${queueStatus.pendingTasks}, En proceso=${queueStatus.runningTasks}, Fallidas=${queueStatus.failedTasks}`);
|
|
239
|
+
}
|
|
240
|
+
console.log('------------------------------------\n');
|
|
241
|
+
}, 5000);
|
|
242
|
+
|
|
243
|
+
// Detener el sistema después de 60 segundos
|
|
244
|
+
setTimeout(() => {
|
|
245
|
+
console.log("\nDeteniendo el sistema de colas...");
|
|
246
|
+
queueIntegration.stop();
|
|
247
|
+
console.log('Sistema de colas detenido');
|
|
248
|
+
|
|
249
|
+
// Mostrar estado final
|
|
250
|
+
console.log('\n--- Estado final del sistema de colas ---');
|
|
251
|
+
const finalStatus = queueIntegration.getStatus();
|
|
252
|
+
for (const [queueName, queueStatus] of Object.entries(finalStatus)) {
|
|
253
|
+
console.log(`${queueName}: Pendientes=${queueStatus.pendingTasks}, En proceso=${queueStatus.runningTasks}, Fallidas=${queueStatus.failedTasks}`);
|
|
254
|
+
}
|
|
255
|
+
console.log('------------------------------------------\n');
|
|
256
|
+
}, 60000);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// Exportar para que pueda ser usado en otros lugares
|
|
260
|
+
module.exports = {
|
|
261
|
+
QueueIntegration,
|
|
262
|
+
ejemploDeUso
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
// Si este archivo se ejecuta directamente, correr el ejemplo
|
|
266
|
+
if (require.main === module) {
|
|
267
|
+
ejemploDeUso();
|
|
268
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integración del Sistema de Colas para el framework JERK
|
|
3
|
+
* Implementación del componente queue/integration.js
|
|
4
|
+
* Archivo de integración para usar el sistema de colas como extensión del framework
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const { queueSystem } = require('./GlobalQueueStorage');
|
|
8
|
+
|
|
9
|
+
class QueueIntegration {
|
|
10
|
+
/**
|
|
11
|
+
* Constructor de la integración
|
|
12
|
+
* @param {Object} options - Opciones de configuración
|
|
13
|
+
*/
|
|
14
|
+
constructor(options = {}) {
|
|
15
|
+
// Usar el sistema de colas global
|
|
16
|
+
this.queueSystem = queueSystem;
|
|
17
|
+
|
|
18
|
+
// Obtener los hooks del framework
|
|
19
|
+
try {
|
|
20
|
+
const framework = require('../../index.js');
|
|
21
|
+
this.globalHooks = framework.hooks;
|
|
22
|
+
} catch (error) {
|
|
23
|
+
// Si no está disponible, crear instancia local
|
|
24
|
+
const HookSystem = require('../core/hooks');
|
|
25
|
+
this.globalHooks = new HookSystem();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Inicializa la integración con el framework
|
|
31
|
+
* @param {Object} frameworkInstance - Instancia del framework JERK
|
|
32
|
+
*/
|
|
33
|
+
initialize(frameworkInstance) {
|
|
34
|
+
// Registrar el sistema de colas en la instancia del framework
|
|
35
|
+
frameworkInstance.queueSystem = this.queueSystem;
|
|
36
|
+
|
|
37
|
+
// Disparar hook cuando se inicializa la integración
|
|
38
|
+
this.globalHooks.doAction('queue_integration_initialized', this.queueSystem);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Obtiene el sistema de colas
|
|
43
|
+
* @returns {QueueSystem} - Instancia del sistema de colas
|
|
44
|
+
*/
|
|
45
|
+
getQueueSystem() {
|
|
46
|
+
return this.queueSystem;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Crea una cola específica con hooks personalizados
|
|
51
|
+
* @param {string} queueName - Nombre de la cola
|
|
52
|
+
* @param {Object} options - Opciones específicas para la cola
|
|
53
|
+
* @param {Object} hooks - Sistema de hooks específico para esta cola (opcional)
|
|
54
|
+
* @returns {Object} - Cola creada
|
|
55
|
+
*/
|
|
56
|
+
createQueue(queueName, options = {}, hooks = null) {
|
|
57
|
+
// Si se proporcionan hooks específicos para esta cola, usarlos
|
|
58
|
+
if (hooks) {
|
|
59
|
+
options.hooks = hooks;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Crear la cola con las opciones
|
|
63
|
+
return this.queueSystem.getOrCreateQueue(queueName, options);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Agrega una tarea a una cola
|
|
68
|
+
* @param {string} queueName - Nombre de la cola
|
|
69
|
+
* @param {Function} task - Función que representa la tarea
|
|
70
|
+
* @param {Object} data - Datos para la tarea
|
|
71
|
+
* @param {number} priority - Prioridad de la tarea
|
|
72
|
+
* @returns {string} - ID único de la tarea
|
|
73
|
+
*/
|
|
74
|
+
addTask(queueName, task, data = {}, priority = 0) {
|
|
75
|
+
return this.queueSystem.addTask(queueName, task, data, priority);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Inicia la ejecución de tareas en todas las colas
|
|
80
|
+
*/
|
|
81
|
+
start() {
|
|
82
|
+
this.queueSystem.start();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Detiene la ejecución de tareas en todas las colas
|
|
87
|
+
*/
|
|
88
|
+
stop() {
|
|
89
|
+
this.queueSystem.stop();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Obtiene el estado actual del sistema de colas
|
|
94
|
+
* @returns {Object} - Estado del sistema de colas
|
|
95
|
+
*/
|
|
96
|
+
getStatus() {
|
|
97
|
+
return this.queueSystem.getStatus();
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Reintenta todas las tareas fallidas en una cola específica
|
|
102
|
+
* @param {string} queueName - Nombre de la cola
|
|
103
|
+
*/
|
|
104
|
+
retryFailedTasks(queueName) {
|
|
105
|
+
this.queueSystem.retryFailedTasks(queueName);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
module.exports = QueueIntegration;
|