vona-module-a-broadcast 5.1.8 → 5.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -34,10 +34,42 @@ let ServiceBroadcast = class ServiceBroadcast extends BeanBase {
|
|
|
34
34
|
await this.__sub?.disconnect();
|
|
35
35
|
}
|
|
36
36
|
emit(info) {
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
const telemetry = this.$scope.telemetry.service.telemetry;
|
|
38
|
+
let infoWithCaller = {
|
|
39
|
+
...info,
|
|
40
|
+
callerId: this.__callerId
|
|
41
|
+
};
|
|
42
|
+
const span = telemetry.enabled ? telemetry.startSpan(`broadcast publish ${String(info.broadcastName)}`, {
|
|
43
|
+
kind: 3,
|
|
44
|
+
attributes: {
|
|
45
|
+
'messaging.operation.name': 'publish',
|
|
46
|
+
'messaging.destination.name': String(info.broadcastName)
|
|
47
|
+
}
|
|
48
|
+
}) : undefined;
|
|
49
|
+
if (span) {
|
|
50
|
+
infoWithCaller = {
|
|
51
|
+
...infoWithCaller,
|
|
52
|
+
options: {
|
|
53
|
+
...info.options,
|
|
54
|
+
telemetry: telemetry.injectCarrier(telemetry.createContext(span))
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
this.__pub.publish(this.__channelName, JSON.stringify(infoWithCaller)).catch(err => {
|
|
59
|
+
if (span) telemetry.recordException(span, err);
|
|
60
|
+
this.app.handleError(err);
|
|
61
|
+
}).finally(() => span?.end());
|
|
39
62
|
}
|
|
40
63
|
async _performTask(info) {
|
|
64
|
+
const telemetry = this.$scope.telemetry.service.telemetry;
|
|
65
|
+
const parent = telemetry.extractCarrier(info.options?.telemetry);
|
|
66
|
+
const span = telemetry.enabled ? telemetry.startSpan(`broadcast receive ${String(info.broadcastName)}`, {
|
|
67
|
+
kind: 4,
|
|
68
|
+
attributes: {
|
|
69
|
+
'messaging.operation.name': 'process',
|
|
70
|
+
'messaging.destination.name': String(info.broadcastName)
|
|
71
|
+
}
|
|
72
|
+
}, parent) : undefined;
|
|
41
73
|
// isEmitter
|
|
42
74
|
const isEmitter = info.callerId === this.__callerId;
|
|
43
75
|
// broadcast config
|
|
@@ -46,25 +78,41 @@ let ServiceBroadcast = class ServiceBroadcast extends BeanBase {
|
|
|
46
78
|
// instance
|
|
47
79
|
const instanceName = info.options?.instanceName;
|
|
48
80
|
const instance = broadcastConfig?.instance !== false;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
81
|
+
try {
|
|
82
|
+
// check
|
|
83
|
+
if ((!isNil(instanceName) || instance) && !this.app.meta.appReady) {
|
|
84
|
+
// ignore
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const execute = () => this.bean.executor.newCtx(async () => {
|
|
88
|
+
const beanFullName = broadcastItem.beanOptions.beanFullName;
|
|
89
|
+
const beanInstance = this.app.bean._getBean(beanFullName);
|
|
90
|
+
return await beanInstance.execute(info.data, isEmitter);
|
|
91
|
+
}, {
|
|
92
|
+
dbInfo: info.options?.dbInfo,
|
|
93
|
+
locale: info.options?.locale,
|
|
94
|
+
tz: info.options?.tz,
|
|
95
|
+
instanceName,
|
|
96
|
+
extraData: {
|
|
97
|
+
...info.options?.extraData,
|
|
98
|
+
state: {
|
|
99
|
+
...info.options?.extraData?.state,
|
|
100
|
+
telemetry: span ? {
|
|
101
|
+
context: telemetry.createContext(span, parent),
|
|
102
|
+
span
|
|
103
|
+
} : undefined
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
transaction: broadcastConfig?.transaction,
|
|
107
|
+
instance
|
|
108
|
+
});
|
|
109
|
+
return await (span ? telemetry.withSpan(span, execute) : execute());
|
|
110
|
+
} catch (err) {
|
|
111
|
+
if (span) telemetry.recordException(span, err);
|
|
112
|
+
throw err;
|
|
113
|
+
} finally {
|
|
114
|
+
span?.end();
|
|
53
115
|
}
|
|
54
|
-
// execute
|
|
55
|
-
return await this.bean.executor.newCtx(async () => {
|
|
56
|
-
const beanFullName = broadcastItem.beanOptions.beanFullName;
|
|
57
|
-
const beanInstance = this.app.bean._getBean(beanFullName);
|
|
58
|
-
return await beanInstance.execute(info.data, isEmitter);
|
|
59
|
-
}, {
|
|
60
|
-
dbInfo: info.options?.dbInfo,
|
|
61
|
-
locale: info.options?.locale,
|
|
62
|
-
tz: info.options?.tz,
|
|
63
|
-
instanceName,
|
|
64
|
-
extraData: info.options?.extraData,
|
|
65
|
-
transaction: broadcastConfig?.transaction,
|
|
66
|
-
instance
|
|
67
|
-
});
|
|
68
116
|
}
|
|
69
117
|
};
|
|
70
118
|
ServiceBroadcast = __decorate([Service(), BeanInfo({
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/service/broadcast.ts","../src/.metadata/this.ts","../src/monkey.ts","../src/main.ts","../src/.metadata/index.ts","../src/lib/beanBroadcastBase.ts","../src/lib/broadcast.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["ServiceBroadcast","BeanBase","constructor","args","__callerId","__channelName","__sub","__pub","__init__","app","bean","worker","id","getRedisClientKeyPrefix","redis","get","duplicate","subscribe","on","_channel","info","_performTask","JSON","parse","then","catch","err","handleError","disposePub","disconnect","disposeSub","emit","callerId","publish","stringify","isEmitter","broadcastItem","onion","broadcast","getOnionSlice","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/service/broadcast.ts","../src/.metadata/this.ts","../src/monkey.ts","../src/main.ts","../src/.metadata/index.ts","../src/lib/beanBroadcastBase.ts","../src/lib/broadcast.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["ServiceBroadcast","BeanBase","constructor","args","__callerId","__channelName","__sub","__pub","__init__","app","bean","worker","id","getRedisClientKeyPrefix","redis","get","duplicate","subscribe","on","_channel","info","_performTask","JSON","parse","then","catch","err","handleError","disposePub","disconnect","disposeSub","emit","telemetry","$scope","service","infoWithCaller","callerId","span","enabled","startSpan","String","broadcastName","kind","attributes","undefined","options","injectCarrier","createContext","publish","stringify","recordException","finally","end","parent","extractCarrier","isEmitter","broadcastItem","onion","broadcast","getOnionSlice","broadcastConfig","getOnionOptions","instanceName","instance","isNil","meta","appReady","execute","executor","newCtx","beanFullName","beanOptions","beanInstance","_getBean","data","dbInfo","locale","tz","extraData","state","context","transaction","withSpan","__decorate","Service","__z_BeanInfo","module","__ThisModule__","Monkey","BeanSimple","appClose","scopeSelf","scope","appClosed","Main","moduleLoading","moduleLoaded","configLoaded","_config","ScopeModuleABroadcast","BeanScopeBase","Scope","BeanBroadcastBase","_prepareInfo","prepareGeneralInfo","$onionName","Broadcast","createBeanDecorator"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/service/broadcast.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAIhC,OAAO,KAAK,EAAqB,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAErF,qBACa,gBAAiB,SAAQ,QAAQ;IAC5C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,KAAK,CAAQ;IAErB,SAAS,CAAC,QAAQ;IAkBL,UAAU;IAIV,UAAU;IAIvB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/service/broadcast.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAIhC,OAAO,KAAK,EAAqB,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAErF,qBACa,gBAAiB,SAAQ,QAAQ;IAC5C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,KAAK,CAAQ;IAErB,SAAS,CAAC,QAAQ;IAkBL,UAAU;IAIV,UAAU;IAIvB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC;IAiCrC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC;CAiE1D"}
|
|
@@ -2,6 +2,11 @@ import type { OmitNever } from 'vona';
|
|
|
2
2
|
import type { IGeneralInfoOptions } from 'vona-module-a-executor';
|
|
3
3
|
import type { ServiceOnion } from 'vona-module-a-onion';
|
|
4
4
|
export interface IBroadcastEmitOptions extends IGeneralInfoOptions {
|
|
5
|
+
telemetry?: {
|
|
6
|
+
version: 1;
|
|
7
|
+
traceparent?: string;
|
|
8
|
+
tracestate?: string;
|
|
9
|
+
};
|
|
5
10
|
}
|
|
6
11
|
export interface IBroadcastExecute<DATA = unknown> {
|
|
7
12
|
execute(data?: DATA, isEmitter?: boolean): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/types/broadcast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;
|
|
1
|
+
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/types/broadcast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;IAChE,SAAS,CAAC,EAAE;QACV,OAAO,EAAE,CAAC,CAAC;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB,CAAC,IAAI,GAAG,OAAO;IAC/C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,oBAAoB,CAAC,IAAI;IACxC,aAAa,EAAE,MAAM,gBAAgB,CAAC;IACtC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;CAAG;AAEpC,MAAM,WAAW,0BAA0B;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAiB,SAAS;QACxB,SAAS,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;KAC3C;CACF;AAED,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,YAAY;QAC3B,SAAS,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;KACxC;IAED,UAAiB,gBAAgB;QAC/B,SAAS,EAAE,KAAK,CAAC;KAClB;CACF"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vona-module-a-broadcast",
|
|
3
|
-
"version": "5.1.
|
|
4
|
-
"gitHead": "
|
|
3
|
+
"version": "5.1.12",
|
|
4
|
+
"gitHead": "fac7768bb7db22ff0180dc59d711efba5b853ae7",
|
|
5
5
|
"description": "",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"Vona Module"
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"tsc:publish": "npm run clean && node ../../../../../packages-cli/cli/src/bin/vona.ts :bin:buildModule --sourcemap && tsc -p tsconfig.build.json",
|
|
30
30
|
"prepublishOnly": "npm run tsc:publish",
|
|
31
31
|
"prepack": "clean-package",
|
|
32
|
-
"postpack": "clean-package restore
|
|
32
|
+
"postpack": "clean-package restore"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"clean-package": "^2.2.0",
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"title": "a-broadcast",
|
|
39
39
|
"vonaModule": {
|
|
40
40
|
"dependencies": {
|
|
41
|
+
"a-telemetry": "5.0.0",
|
|
41
42
|
"a-worker": "5.0.0"
|
|
42
43
|
},
|
|
43
44
|
"onions": {
|
package/src/service/broadcast.ts
CHANGED
|
@@ -41,11 +41,54 @@ export class ServiceBroadcast extends BeanBase {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
emit<DATA>(info: IBroadcastJobContext<DATA>) {
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
const telemetry = this.$scope.telemetry.service.telemetry;
|
|
45
|
+
let infoWithCaller = {
|
|
46
|
+
...info,
|
|
47
|
+
callerId: this.__callerId,
|
|
48
|
+
};
|
|
49
|
+
const span = telemetry.enabled
|
|
50
|
+
? telemetry.startSpan(`broadcast publish ${String(info.broadcastName)}`, {
|
|
51
|
+
kind: 3,
|
|
52
|
+
attributes: {
|
|
53
|
+
'messaging.operation.name': 'publish',
|
|
54
|
+
'messaging.destination.name': String(info.broadcastName),
|
|
55
|
+
},
|
|
56
|
+
})
|
|
57
|
+
: undefined;
|
|
58
|
+
if (span) {
|
|
59
|
+
infoWithCaller = {
|
|
60
|
+
...infoWithCaller,
|
|
61
|
+
options: {
|
|
62
|
+
...info.options,
|
|
63
|
+
telemetry: telemetry.injectCarrier(telemetry.createContext(span)),
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
this.__pub
|
|
68
|
+
.publish(this.__channelName, JSON.stringify(infoWithCaller))
|
|
69
|
+
.catch(err => {
|
|
70
|
+
if (span) telemetry.recordException(span, err);
|
|
71
|
+
this.app.handleError(err);
|
|
72
|
+
})
|
|
73
|
+
.finally(() => span?.end());
|
|
46
74
|
}
|
|
47
75
|
|
|
48
76
|
async _performTask<DATA>(info: IBroadcastJobContext<DATA>) {
|
|
77
|
+
const telemetry = this.$scope.telemetry.service.telemetry;
|
|
78
|
+
const parent = telemetry.extractCarrier(info.options?.telemetry);
|
|
79
|
+
const span = telemetry.enabled
|
|
80
|
+
? telemetry.startSpan(
|
|
81
|
+
`broadcast receive ${String(info.broadcastName)}`,
|
|
82
|
+
{
|
|
83
|
+
kind: 4,
|
|
84
|
+
attributes: {
|
|
85
|
+
'messaging.operation.name': 'process',
|
|
86
|
+
'messaging.destination.name': String(info.broadcastName),
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
parent,
|
|
90
|
+
)
|
|
91
|
+
: undefined;
|
|
49
92
|
// isEmitter
|
|
50
93
|
const isEmitter = info.callerId === this.__callerId;
|
|
51
94
|
// broadcast config
|
|
@@ -54,27 +97,45 @@ export class ServiceBroadcast extends BeanBase {
|
|
|
54
97
|
// instance
|
|
55
98
|
const instanceName = info.options?.instanceName;
|
|
56
99
|
const instance = broadcastConfig?.instance !== false;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
100
|
+
try {
|
|
101
|
+
// check
|
|
102
|
+
if ((!isNil(instanceName) || instance) && !this.app.meta.appReady) {
|
|
103
|
+
// ignore
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const execute = () =>
|
|
107
|
+
this.bean.executor.newCtx(
|
|
108
|
+
async () => {
|
|
109
|
+
const beanFullName = broadcastItem.beanOptions.beanFullName;
|
|
110
|
+
const beanInstance = <IBroadcastExecute<DATA>>(
|
|
111
|
+
this.app.bean._getBean(beanFullName as any)
|
|
112
|
+
);
|
|
113
|
+
return await beanInstance.execute(info.data, isEmitter);
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
dbInfo: info.options?.dbInfo,
|
|
117
|
+
locale: info.options?.locale,
|
|
118
|
+
tz: info.options?.tz,
|
|
119
|
+
instanceName,
|
|
120
|
+
extraData: {
|
|
121
|
+
...info.options?.extraData,
|
|
122
|
+
state: {
|
|
123
|
+
...info.options?.extraData?.state,
|
|
124
|
+
telemetry: span
|
|
125
|
+
? { context: telemetry.createContext(span, parent), span }
|
|
126
|
+
: undefined,
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
transaction: broadcastConfig?.transaction,
|
|
130
|
+
instance,
|
|
131
|
+
},
|
|
132
|
+
);
|
|
133
|
+
return await (span ? telemetry.withSpan(span, execute) : execute());
|
|
134
|
+
} catch (err) {
|
|
135
|
+
if (span) telemetry.recordException(span, err);
|
|
136
|
+
throw err;
|
|
137
|
+
} finally {
|
|
138
|
+
span?.end();
|
|
61
139
|
}
|
|
62
|
-
// execute
|
|
63
|
-
return await this.bean.executor.newCtx(
|
|
64
|
-
async () => {
|
|
65
|
-
const beanFullName = broadcastItem.beanOptions.beanFullName;
|
|
66
|
-
const beanInstance = <IBroadcastExecute<DATA>>this.app.bean._getBean(beanFullName as any);
|
|
67
|
-
return await beanInstance.execute(info.data, isEmitter);
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
dbInfo: info.options?.dbInfo,
|
|
71
|
-
locale: info.options?.locale,
|
|
72
|
-
tz: info.options?.tz,
|
|
73
|
-
instanceName,
|
|
74
|
-
extraData: info.options?.extraData,
|
|
75
|
-
transaction: broadcastConfig?.transaction,
|
|
76
|
-
instance,
|
|
77
|
-
},
|
|
78
|
-
);
|
|
79
140
|
}
|
|
80
141
|
}
|
package/src/types/broadcast.ts
CHANGED
|
@@ -2,7 +2,13 @@ import type { OmitNever } from 'vona';
|
|
|
2
2
|
import type { IGeneralInfoOptions } from 'vona-module-a-executor';
|
|
3
3
|
import type { ServiceOnion } from 'vona-module-a-onion';
|
|
4
4
|
|
|
5
|
-
export interface IBroadcastEmitOptions extends IGeneralInfoOptions {
|
|
5
|
+
export interface IBroadcastEmitOptions extends IGeneralInfoOptions {
|
|
6
|
+
telemetry?: {
|
|
7
|
+
version: 1;
|
|
8
|
+
traceparent?: string;
|
|
9
|
+
tracestate?: string;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
6
12
|
|
|
7
13
|
export interface IBroadcastExecute<DATA = unknown> {
|
|
8
14
|
execute(data?: DATA, isEmitter?: boolean): Promise<void>;
|