/** * @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(); obs01.subscribe(benchmarkObservable); dispatcher.registerObservable(obs01, { mode: "subscribe", topic: "test.var", schema: {} }); }; main();