hemera.js
1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
"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