added new queue lib with batch processor and provider
This commit is contained in:
parent
ddcf94a587
commit
6c548416d1
19 changed files with 1939 additions and 35 deletions
85
libs/queue/test-simplified-api.ts
Normal file
85
libs/queue/test-simplified-api.ts
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
#!/usr/bin/env bun
|
||||
// Quick test of the simplified API
|
||||
import { initializeBatchCache, processItems, QueueManager } from './src/index.js';
|
||||
|
||||
async function testSimplifiedAPI() {
|
||||
console.log('🚀 Testing simplified queue API...');
|
||||
|
||||
// Create queue manager
|
||||
const queueManager = new QueueManager({
|
||||
queueName: 'di2',
|
||||
workers: 2,
|
||||
concurrency: 2,
|
||||
});
|
||||
|
||||
// Register a simple provider
|
||||
queueManager.registerProvider('test-provider', {
|
||||
'process-item': async payload => {
|
||||
console.log(`✅ Processing item: ${JSON.stringify(payload)}`);
|
||||
await new Promise(resolve => setTimeout(resolve, 100));
|
||||
return { processed: true, originalData: payload };
|
||||
},
|
||||
});
|
||||
|
||||
try {
|
||||
await queueManager.initialize();
|
||||
await initializeBatchCache(queueManager);
|
||||
|
||||
console.log('📋 Testing with simple array...');
|
||||
|
||||
// Test 1: Simple array of numbers
|
||||
const numbers = [1, 2, 3, 4, 5];
|
||||
const result1 = await processItems(numbers, queueManager, {
|
||||
totalDelayMs: 5000,
|
||||
useBatching: false,
|
||||
provider: 'test-provider',
|
||||
operation: 'process-item',
|
||||
});
|
||||
|
||||
console.log('🎯 Numbers result:', result1);
|
||||
|
||||
// Test 2: Array of objects
|
||||
const objects = [
|
||||
{ id: 1, name: 'Item 1' },
|
||||
{ id: 2, name: 'Item 2' },
|
||||
{ id: 3, name: 'Item 3' },
|
||||
];
|
||||
|
||||
const result2 = await processItems(objects, queueManager, {
|
||||
totalDelayMs: 5000,
|
||||
useBatching: true,
|
||||
batchSize: 2,
|
||||
provider: 'test-provider',
|
||||
operation: 'process-item',
|
||||
});
|
||||
|
||||
console.log('🎯 Objects result:', result2);
|
||||
|
||||
// Test 3: Array of strings (symbols)
|
||||
const symbols = Array.from({ length: 1000 }, (_, i) => `Symbol-${i + 1}`);
|
||||
console.log('📋 Testing with symbols...');
|
||||
const result3 = await processItems(symbols, queueManager, {
|
||||
totalDelayMs: 3000,
|
||||
useBatching: true,
|
||||
batchSize: 1,
|
||||
provider: 'test-provider',
|
||||
operation: 'process-item',
|
||||
});
|
||||
|
||||
console.log('🎯 Symbols result:', result3);
|
||||
|
||||
console.log('✨ All tests completed successfully!');
|
||||
console.log('🏆 The simplified API is working correctly!');
|
||||
} catch (error) {
|
||||
console.error('❌ Test failed:', error);
|
||||
} finally {
|
||||
// Clean shutdown
|
||||
setTimeout(async () => {
|
||||
await queueManager.shutdown();
|
||||
console.log('🔄 Shutdown complete');
|
||||
process.exit(0);
|
||||
}, 10000000);
|
||||
}
|
||||
}
|
||||
|
||||
testSimplifiedAPI().catch(console.error);
|
||||
Loading…
Add table
Add a link
Reference in a new issue