70 lines
2.0 KiB
TypeScript
70 lines
2.0 KiB
TypeScript
import 'reflect-metadata';
|
|
import { promisify } from 'util';
|
|
import { AmqpLayer } from "../lib/communication/amqpLayer";
|
|
import { nopeDispatcher } from "../lib/dispatcher/nopeDispatcher";
|
|
import { getNopeLogger } from "../lib/logger/getLogger";
|
|
import { NopeObservable } from "../lib/observables/nopeObservable";
|
|
import { generateBenchmarkFunction } from "../modules/funcs/generateBenchmarkFunction";
|
|
|
|
|
|
const client = new AmqpLayer('localhost');
|
|
|
|
|
|
const sleep = promisify(setTimeout)
|
|
const logger = getNopeLogger('dispatcher','info')
|
|
|
|
|
|
function genFunc(name, delay) {
|
|
const logger = getNopeLogger('debug',name)
|
|
return (idx: number) => {
|
|
return new Promise((resolve, reject) => {
|
|
try {
|
|
logger.info('started ' + idx.toString());
|
|
setTimeout(() => {
|
|
logger.info('finished ' + idx.toString());
|
|
resolve();
|
|
}, delay);
|
|
} catch(e){
|
|
reject(e)
|
|
}
|
|
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
const main = async () => {
|
|
await sleep(1000);
|
|
const dispatcher = new nopeDispatcher({ communicator: client, logger }, () => new NopeObservable());
|
|
|
|
const benchmarkFunction = generateBenchmarkFunction(1000, 'Function');
|
|
const benchmarkDirect = generateBenchmarkFunction(1000, 'Direct');
|
|
const benchmarkObservable = generateBenchmarkFunction(1000, 'Observable');
|
|
|
|
// Register Functions
|
|
dispatcher.registerFunction(genFunc('dispatcher-1-slow', 2000), {
|
|
id: 'func'
|
|
});
|
|
dispatcher.registerFunction(async () => benchmarkFunction(), {
|
|
id: 'benchmark'
|
|
});
|
|
|
|
await client.on('subscribe','benchmark', benchmarkDirect);
|
|
|
|
await sleep(500);
|
|
const obs01 = new NopeObservable<number>();
|
|
obs01.subscribe(benchmarkObservable);
|
|
dispatcher.registerObservable(obs01, {
|
|
mode: 'subscribe',
|
|
topic: 'test.var'
|
|
});
|
|
|
|
dispatcher.registerObservable(obs01, {
|
|
mode: 'subscribe',
|
|
topic: 'test.var'
|
|
});
|
|
|
|
|
|
}
|
|
|
|
main(); |