65 lines
1.8 KiB
TypeScript
65 lines
1.8 KiB
TypeScript
/**
|
|
* @author Martin Karkowski
|
|
* @email m.karkowski@zema.de
|
|
* @create date 2021-06-04 19:18:50
|
|
* @modify date 2021-06-04 19:18:50
|
|
* @desc [description]
|
|
*/
|
|
|
|
|
|
import "reflect-metadata";
|
|
import { promisify } from "util";
|
|
import { runNopeBackend } from "../lib/cli/runNopeBackend";
|
|
import { getNopeLogger } from "../lib/logger/getLogger";
|
|
import { NopeObservable } from "../lib/observables/nopeObservable";
|
|
import { generateBenchmarkFunction } from "../modules/funcs/generateBenchmarkFunction";
|
|
|
|
const sleep = promisify(setTimeout);
|
|
const logger = getNopeLogger("dispatcher","info");
|
|
|
|
/**
|
|
* Helper that will create a Sleep Function
|
|
* @param name
|
|
* @param delay
|
|
* @returns
|
|
*/
|
|
function genFunc(name, delay) {
|
|
const logger = getNopeLogger("debug",name);
|
|
|
|
return async (idx: number) => {
|
|
logger.info("started",name,"with input=",idx);
|
|
await sleep(delay);
|
|
logger.info("waited",name,"with input=",idx);
|
|
};
|
|
|
|
}
|
|
|
|
const main = async () => {
|
|
await sleep(1000);
|
|
|
|
logger.info("Creating Dispatcher");
|
|
const dispatcher = await runNopeBackend({skipLoadingConfig: true, channel:"amqp", log: "info"});
|
|
logger.info("Dispatcher ready");
|
|
|
|
const benchmarkFunction = generateBenchmarkFunction(1000, "Function");
|
|
const benchmarkObservable = generateBenchmarkFunction(1000, "Observable");
|
|
|
|
// Register Functions
|
|
dispatcher.registerFunction(genFunc("dispatcher-1-slow", 2000), {
|
|
id: "func"
|
|
});
|
|
dispatcher.registerFunction(async () => benchmarkFunction(), {
|
|
id: "benchmark"
|
|
});
|
|
|
|
await sleep(500);
|
|
const obs01 = new NopeObservable<number>();
|
|
obs01.subscribe(benchmarkObservable);
|
|
dispatcher.registerObservable(obs01, {
|
|
mode: "subscribe",
|
|
topic: "test.var",
|
|
schema: {}
|
|
});
|
|
};
|
|
|
|
main(); |