/** * @author Martin Karkowski * @email m.karkowski@zema.de * @create date 2021-06-04 19:17:56 * @modify date 2021-08-11 17:38:57 * @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"; const sleep = promisify(setTimeout); const logger = getNopeLogger("dispatcher", "info"); const main = async () => { logger.info("Creating Dispatcher"); const dispatcher = (await runNopeBackend({ skipLoadingConfig: true, channel: "amqp", log: "info" })).dispatcher; logger.info("Dispatcher ready"); const max = 10000; await sleep(1000); const promises = []; let c = 0; // Call Tasks Parallel! const start = Date.now(); while (c < 10) { try { logger.info("Dispatching Call", c); promises.push(dispatcher.performCall("func", [c++])); } catch (e) { logger.error(e); } } const dispatched = Date.now(); // Now Wait for all Open Task await Promise.all(promises); const end = Date.now(); logger.info("Dispatching took", dispatched - start, "[ms]"); logger.info("Calling took", end - start, "[ms]"); await sleep(500); const obs01 = new NopeObservable(); dispatcher.registerObservable(obs01, { mode: "publish", topic: "test.var", schema: {} }); obs01.setContent(1200); await sleep(500); c = 0; while (c < max) { obs01.setContent(c++); } }; main();