2021-06-07 06:00:14 +00:00
|
|
|
/**
|
|
|
|
* @author Martin Karkowski
|
|
|
|
* @email m.karkowski@zema.de
|
|
|
|
* @create date 2021-06-04 19:17:56
|
|
|
|
* @modify date 2021-06-04 19:17:56
|
|
|
|
* @desc [description]
|
|
|
|
*/
|
|
|
|
|
|
|
|
import "reflect-metadata";
|
|
|
|
import { promisify } from "util";
|
|
|
|
import { runNopeBackend } from "../lib/cli/runNopeBackend";
|
2020-11-09 14:28:09 +00:00
|
|
|
import { getNopeLogger } from "../lib/logger/getLogger";
|
|
|
|
import { NopeObservable } from "../lib/observables/nopeObservable";
|
|
|
|
|
2021-06-07 06:00:14 +00:00
|
|
|
const sleep = promisify(setTimeout);
|
|
|
|
const logger = getNopeLogger("dispatcher","info");
|
2020-09-30 06:25:03 +00:00
|
|
|
|
2021-06-07 06:00:14 +00:00
|
|
|
const main = async () => {
|
2020-09-30 06:25:03 +00:00
|
|
|
|
2021-06-07 06:00:14 +00:00
|
|
|
logger.info("Creating Dispatcher");
|
|
|
|
const dispatcher = await runNopeBackend({skipLoadingConfig: true, channel:"amqp", log: "info"});
|
|
|
|
logger.info("Dispatcher ready");
|
2020-09-30 06:25:03 +00:00
|
|
|
|
|
|
|
|
2021-06-07 06:00:14 +00:00
|
|
|
const max = 10000;
|
|
|
|
await sleep(1000);
|
|
|
|
|
|
|
|
const promises = [];
|
|
|
|
|
2020-09-30 06:25:03 +00:00
|
|
|
|
2021-06-07 06:00:14 +00:00
|
|
|
let c = 0;
|
2020-09-30 06:25:03 +00:00
|
|
|
// Call Tasks Parallel!
|
2021-06-07 06:00:14 +00:00
|
|
|
const start = Date.now();
|
2020-09-30 06:25:03 +00:00
|
|
|
while (c < 10) {
|
2021-06-07 06:00:14 +00:00
|
|
|
try {
|
|
|
|
logger.info("Dispatching Call", c);
|
|
|
|
promises.push(dispatcher.performCall("func", [c++]));
|
|
|
|
} catch(e){
|
|
|
|
logger.error(e);
|
|
|
|
}
|
2020-09-30 06:25:03 +00:00
|
|
|
}
|
2021-06-07 06:00:14 +00:00
|
|
|
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]");
|
2020-09-30 06:25:03 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await sleep(500);
|
2020-11-09 14:28:09 +00:00
|
|
|
const obs01 = new NopeObservable<number>();
|
2020-09-30 06:25:03 +00:00
|
|
|
dispatcher.registerObservable(obs01, {
|
2021-06-07 06:00:14 +00:00
|
|
|
mode: "publish",
|
|
|
|
topic: "test.var",
|
|
|
|
schema: {}
|
2020-09-30 06:25:03 +00:00
|
|
|
});
|
|
|
|
obs01.setContent(1200);
|
|
|
|
|
|
|
|
await sleep(500);
|
2021-06-07 06:00:14 +00:00
|
|
|
|
2020-09-30 06:25:03 +00:00
|
|
|
c = 0;
|
|
|
|
while (c < max) {
|
|
|
|
obs01.setContent(c++);
|
|
|
|
}
|
2021-06-07 06:00:14 +00:00
|
|
|
};
|
2020-09-30 06:25:03 +00:00
|
|
|
|
|
|
|
main();
|