hemera.js 1.5 KB
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.init = init;
exports.act = act;
const nats_1 = require("nats");
const Hemera = require('nats-hemera');
let hemera;
let logger;
function init(cfg) {
    logger = console;
    hemera = new Hemera((0, nats_1.connect)(cfg.nats), {
        ...cfg.hemera
    });
    logger.info('msbase hemera log init success');
    try {
        const HemeraZipkin = require('hemera-zipkin');
        hemera.use(HemeraZipkin, {
            host: process.env.ZIPKIN_URL,
            port: process.env.ZIPKIN_PORT,
            sampling: 1
        });
    }
    catch (e) {
        logger.info('zipkin未配置: ');
    }
    hemera.ready(async () => {
        logger.log('hemera initialized');
    });
    return hemera;
}
async function act(args, isThrowError = false) {
    const starttime = Date.now();
    let localfn = hemera.router.lookup(args);
    if (localfn)
        localfn = localfn.action;
    if (!args.context)
        args.context = {};
    let ret = await (localfn ?
        localfn(args)
        : hemera.act(args)).catch((error) => ({ error: error.message, code: 1001 }));
    if (ret && ret.context)
        ret = ret.data;
    if (ret && ret.error)
        logger.error(ret.error);
    if (isThrowError && ret && ret.error)
        throw new Error(ret.error);
    const total = Date.now() - starttime;
    if (total > 200) {
        logger.log(`${JSON.stringify(args)} 调用时间耗时:${total}毫秒 `);
    }
    return ret;
}
//# sourceMappingURL=hemera.js.map