@effect-app/infra 0.232.8 → 0.232.10
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/CHANGELOG.md +12 -0
- package/_cjs/services/QueueMaker/memQueue.cjs +20 -16
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs +22 -18
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/service.cjs +1 -1
- package/_cjs/services/QueueMaker/service.cjs.map +1 -1
- package/dist/services/QueueMaker/memQueue.d.ts.map +1 -1
- package/dist/services/QueueMaker/memQueue.js +21 -20
- package/dist/services/QueueMaker/sbqueue.d.ts +2 -4
- package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/services/QueueMaker/sbqueue.js +27 -24
- package/dist/services/QueueMaker/service.d.ts +2 -2
- package/dist/services/QueueMaker/service.js +2 -2
- package/package.json +3 -3
- package/src/services/QueueMaker/memQueue.ts +14 -15
- package/src/services/QueueMaker/sbqueue.ts +18 -17
- package/src/services/QueueMaker/service.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -36,15 +36,14 @@ function makeMemQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
|
36
36
|
return {
|
|
37
37
|
publish: (...messages) => _effectApp.Effect.gen(function* ($) {
|
|
38
38
|
const requestContext = yield* $(rcc.requestContext);
|
|
39
|
-
const
|
|
40
|
-
const span = _effect.Tracer.externalSpan(currentSpan);
|
|
39
|
+
const span = yield* $(_effectApp.Effect.serviceOption(_effect.Tracer.ParentSpan));
|
|
41
40
|
return yield* $(_effectApp.Effect.forEach(messages, m =>
|
|
42
41
|
// we JSON encode, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
43
42
|
_effectApp.S.encode(wireSchema)({
|
|
44
43
|
body: m,
|
|
45
44
|
meta: {
|
|
46
45
|
requestContext,
|
|
47
|
-
span
|
|
46
|
+
span: _effectApp.Option.getOrUndefined(span)
|
|
48
47
|
}
|
|
49
48
|
}).pipe(_effectApp.Effect.orDie, _effectApp.Effect.andThen(JSON.stringify),
|
|
50
49
|
// .tap((msg) => info("Publishing Mem Message: " + utils.inspect(msg)))
|
|
@@ -61,19 +60,24 @@ function makeMemQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
|
61
60
|
_effectApp.Effect.sync(() => JSON.parse(msg)).pipe(_effectApp.Effect.flatMap(parseDrain), _effectApp.Effect.orDie, _effectApp.Effect.flatMap(({
|
|
62
61
|
body,
|
|
63
62
|
meta
|
|
64
|
-
}) =>
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
63
|
+
}) => {
|
|
64
|
+
let effect = _effectApp.Effect.logDebug(`$$ [${queueDrainName}] Processing incoming message`).pipe(_effectApp.Effect.annotateLogs({
|
|
65
|
+
body: (0, _utils.pretty)(body),
|
|
66
|
+
meta: (0, _utils.pretty)(meta)
|
|
67
|
+
}), _effectApp.Effect.zipRight(handleEvent(body)), silenceAndReportError, _ => (0, _setupRequest.setupRequestContext)(_, _RequestContext.RequestContext.inherit(meta.requestContext, {
|
|
68
|
+
id: (0, _ids.RequestId)(body.id),
|
|
69
|
+
locale: "en",
|
|
70
|
+
name: (0, _schema.NonEmptyString255)(`${queueDrainName}.${body._tag}`)
|
|
71
|
+
})), _effectApp.Effect.withSpan(`queue.drain: ${queueDrainName}`, {
|
|
72
|
+
attributes: {
|
|
73
|
+
"queue.name": queueDrainName
|
|
74
|
+
}
|
|
75
|
+
}));
|
|
76
|
+
if (meta.span) {
|
|
77
|
+
effect = _effectApp.Effect.withParentSpan(effect, _effect.Tracer.externalSpan(meta.span));
|
|
78
|
+
}
|
|
79
|
+
return effect;
|
|
80
|
+
}));
|
|
77
81
|
return yield* $(qDrain.take.pipe(_effectApp.Effect.flatMap(x => processMessage(x).pipe(_effectApp.Effect.uninterruptible, _effectApp.Effect.fork, _effectApp.Effect.flatMap(_effectApp.Fiber.join))),
|
|
78
82
|
// TODO: normally a failed item would be returned to the queue and retried up to X times.
|
|
79
83
|
// .flatMap(_ => _._tag === "Failure" && !isInterrupted ? qDrain.offer(x) : Effect.unit) // TODO: retry count tracking and max retries.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memQueue.cjs","names":["_memQueue","require","_RequestContext","_schema","_effect","_effectApp","_ids","_utils","_setupRequest","_RequestContextContainer","_errors","_service","makeMemQueue","queueName","queueDrainName","schema","drainSchema","Effect","gen","$","mem","MemQueue","q","getOrCreateQueue","qDrain","rcc","RequestContextContainer","wireSchema","struct","body","meta","QueueMeta","drainW","parseDrain","flow","S","decodeUnknown","orDie","publish","messages","requestContext","
|
|
1
|
+
{"version":3,"file":"memQueue.cjs","names":["_memQueue","require","_RequestContext","_schema","_effect","_effectApp","_ids","_utils","_setupRequest","_RequestContextContainer","_errors","_service","makeMemQueue","queueName","queueDrainName","schema","drainSchema","Effect","gen","$","mem","MemQueue","q","getOrCreateQueue","qDrain","rcc","RequestContextContainer","wireSchema","struct","body","meta","QueueMeta","drainW","parseDrain","flow","S","decodeUnknown","orDie","publish","messages","requestContext","span","serviceOption","Tracer","ParentSpan","forEach","m","encode","Option","getOrUndefined","pipe","andThen","JSON","stringify","flatMap","_","offer","discard","drain","handleEvent","silenceAndReportError","reportNonInterruptedFailure","name","processMessage","msg","sync","parse","effect","logDebug","annotateLogs","pretty","zipRight","setupRequestContext","RequestContext","inherit","id","RequestId","locale","NonEmptyString255","_tag","withSpan","attributes","withParentSpan","externalSpan","take","x","uninterruptible","fork","Fiber","join","forever"],"sources":["../../../src/services/QueueMaker/memQueue.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -48,21 +48,26 @@ function makeServiceBusQueue(_queueName, queueDrainName, schema, drainSchema) {
|
|
|
48
48
|
return _effectApp.Effect.sync(() => JSON.parse(messageBody)).pipe(_effectApp.Effect.flatMap(x => parseDrain(x)), _effectApp.Effect.orDie, _effectApp.Effect.flatMap(({
|
|
49
49
|
body,
|
|
50
50
|
meta
|
|
51
|
-
}) =>
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
51
|
+
}) => {
|
|
52
|
+
let effect = _effectApp.Effect.logDebug(`$$ [${queueDrainName}] Processing incoming message`).pipe(_effectApp.Effect.annotateLogs({
|
|
53
|
+
body: (0, _utils.pretty)(body),
|
|
54
|
+
meta: (0, _utils.pretty)(meta)
|
|
55
|
+
}), _effectApp.Effect.zipRight(handleEvent(body)), _effectApp.Effect.orDie)
|
|
56
|
+
// we silenceAndReportError here, so that the error is reported, and moves into the Exit.
|
|
57
|
+
.pipe(silenceAndReportError, _ => (0, _setupRequest.setupRequestContext)(_, _RequestContext.RequestContext.inherit(meta.requestContext, {
|
|
58
|
+
id: (0, _ids.RequestId)(body.id),
|
|
59
|
+
locale: "en",
|
|
60
|
+
name: (0, _schema.NonEmptyString255)(`${queueDrainName}.${body._tag}`)
|
|
61
|
+
})), _effectApp.Effect.withSpan(`queue.drain: ${queueDrainName}`, {
|
|
62
|
+
attributes: {
|
|
63
|
+
"queue.name": queueDrainName
|
|
64
|
+
}
|
|
65
|
+
}));
|
|
66
|
+
if (meta.span) {
|
|
67
|
+
effect = _effectApp.Effect.withParentSpan(effect, _effect.Tracer.externalSpan(meta.span));
|
|
68
|
+
}
|
|
69
|
+
return effect;
|
|
70
|
+
}), _effectApp.Effect
|
|
66
71
|
// we reportError here, so that we report the error only, and keep flowing
|
|
67
72
|
.tapErrorCause(reportError));
|
|
68
73
|
}
|
|
@@ -73,14 +78,13 @@ function makeServiceBusQueue(_queueName, queueDrainName, schema, drainSchema) {
|
|
|
73
78
|
}).pipe(_effectApp.Effect.andThen(_effectApp.Effect.never)),
|
|
74
79
|
publish: (...messages) => _effectApp.Effect.gen(function* ($) {
|
|
75
80
|
const requestContext = yield* $(rcc.requestContext);
|
|
76
|
-
const
|
|
77
|
-
const span = _effect.Tracer.externalSpan(currentSpan);
|
|
81
|
+
const span = yield* $(_effectApp.Effect.serviceOption(_effect.Tracer.ParentSpan));
|
|
78
82
|
return yield* $(_effectApp.Effect.promise(() => s.sendMessages(messages.map(m => ({
|
|
79
83
|
body: JSON.stringify(_effectApp.S.encodeSync(wireSchema)({
|
|
80
84
|
body: m,
|
|
81
85
|
meta: {
|
|
82
86
|
requestContext,
|
|
83
|
-
span
|
|
87
|
+
span: _effectApp.Option.getOrUndefined(span)
|
|
84
88
|
}
|
|
85
89
|
})),
|
|
86
90
|
messageId: m.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sbqueue.cjs","names":["_ServiceBus","require","_errorReporter","_RequestContext","_effect","_effectApp","_ids","_schema","_utils","_setupRequest","_RequestContextContainer","_errors","_service","makeServiceBusQueue","_queueName","queueDrainName","schema","drainSchema","wireSchema","struct","body","meta","QueueMeta","drainW","parseDrain","flow","S","decodeUnknown","Effect","orDie","gen","$","s","Sender","receiver","Receiver","receiverLayer","Layer","succeed","silenceAndReportError","reportNonInterruptedFailure","name","reportError","reportNonInterruptedFailureCause","rcc","RequestContextContainer","drain","handleEvent","processMessage","messageBody","sync","JSON","parse","pipe","flatMap","x","logDebug","annotateLogs","pretty","zipRight","_","setupRequestContext","RequestContext","inherit","requestContext","id","RequestId","locale","NonEmptyString255","_tag","withSpan","attributes","
|
|
1
|
+
{"version":3,"file":"sbqueue.cjs","names":["_ServiceBus","require","_errorReporter","_RequestContext","_effect","_effectApp","_ids","_schema","_utils","_setupRequest","_RequestContextContainer","_errors","_service","makeServiceBusQueue","_queueName","queueDrainName","schema","drainSchema","wireSchema","struct","body","meta","QueueMeta","drainW","parseDrain","flow","S","decodeUnknown","Effect","orDie","gen","$","s","Sender","receiver","Receiver","receiverLayer","Layer","succeed","silenceAndReportError","reportNonInterruptedFailure","name","reportError","reportNonInterruptedFailureCause","rcc","RequestContextContainer","drain","handleEvent","processMessage","messageBody","sync","JSON","parse","pipe","flatMap","x","effect","logDebug","annotateLogs","pretty","zipRight","_","setupRequestContext","RequestContext","inherit","requestContext","id","RequestId","locale","NonEmptyString255","_tag","withSpan","attributes","span","withParentSpan","Tracer","externalSpan","tapErrorCause","subscribe","uninterruptible","processError","err","captureException","error","provide","andThen","never","publish","messages","serviceOption","ParentSpan","promise","sendMessages","map","m","stringify","encodeSync","Option","getOrUndefined","messageId","contentType","makeServiceBusLayers","url","queueName","merge","LiveReceiver","LiveSender","LiveServiceBusClient"],"sources":["../../../src/services/QueueMaker/sbqueue.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -13,7 +13,7 @@ const QueueMeta = exports.QueueMeta = (0, _schema.struct)({
|
|
|
13
13
|
span: _effectApp.S.optional((0, _schema.struct)({
|
|
14
14
|
spanId: _effectApp.S.string,
|
|
15
15
|
traceId: _effectApp.S.string,
|
|
16
|
-
sampled: _effectApp.S.
|
|
16
|
+
sampled: _effectApp.S.boolean
|
|
17
17
|
}))
|
|
18
18
|
});
|
|
19
19
|
//# sourceMappingURL=service.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.cjs","names":["_schema","require","_effectApp","_RequestContext","QueueMaker","exports","QueueMeta","struct","requestContext","RequestContext","span","S","optional","spanId","string","traceId","sampled","boolean"],"sources":["../../../src/services/QueueMaker/service.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,eAAA,GAAAF,OAAA;AAiBO,MAAMG,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAkB,EAAE;AAEpC,MAAME,SAAS,GAAAD,OAAA,CAAAC,SAAA,GAAG,IAAAC,cAAM,EAAC;EAC9BC,cAAc,EAAEC,8BAAc;EAC9BC,IAAI,EAAEC,YAAC,CAACC,QAAQ,CAAC,IAAAL,cAAM,EAAC;IACtBM,MAAM,EAAEF,YAAC,CAACG,MAAM;IAChBC,OAAO,EAAEJ,YAAC,CAACG,MAAM;IACjBE,OAAO,EAAEL,YAAC,
|
|
1
|
+
{"version":3,"file":"service.cjs","names":["_schema","require","_effectApp","_RequestContext","QueueMaker","exports","QueueMeta","struct","requestContext","RequestContext","span","S","optional","spanId","string","traceId","sampled","boolean"],"sources":["../../../src/services/QueueMaker/service.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,eAAA,GAAAF,OAAA;AAiBO,MAAMG,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAkB,EAAE;AAEpC,MAAME,SAAS,GAAAD,OAAA,CAAAC,SAAA,GAAG,IAAAC,cAAM,EAAC;EAC9BC,cAAc,EAAEC,8BAAc;EAC9BC,IAAI,EAAEC,YAAC,CAACC,QAAQ,CAAC,IAAAL,cAAM,EAAC;IACtBM,MAAM,EAAEF,YAAC,CAACG,MAAM;IAChBC,OAAO,EAAEJ,YAAC,CAACG,MAAM;IACjBE,OAAO,EAAEL,YAAC,CAACM;GACZ,CAAC;CACH,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../../src/services/QueueMaker/memQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAG9D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../../src/services/QueueMaker/memQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAG9D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAuB,CAAC,EAAE,MAAM,YAAY,CAAA;AAI3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAIvE;;GAEG;AACH,wBAAgB,YAAY,CAC1B,GAAG,SAAS;IAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC5C,QAAQ,SAAS;IAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACjD,IAAI,EACJ,SAAS,EAET,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;;yCAgCvB,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;8CAuDlE"}
|
|
@@ -2,7 +2,7 @@ import { MemQueue } from "@effect-app/infra-adapters/memQueue";
|
|
|
2
2
|
import { RequestContext } from "@effect-app/infra/RequestContext";
|
|
3
3
|
import { NonEmptyString255, struct } from "@effect-app/schema";
|
|
4
4
|
import { Tracer } from "effect";
|
|
5
|
-
import { Effect, Fiber, flow, S } from "effect-app";
|
|
5
|
+
import { Effect, Fiber, flow, Option, S } from "effect-app";
|
|
6
6
|
import { RequestId } from "effect-app/ids";
|
|
7
7
|
import { pretty } from "effect-app/utils";
|
|
8
8
|
import { setupRequestContext } from "../../api/setupRequest.js";
|
|
@@ -25,12 +25,11 @@ export function makeMemQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
|
25
25
|
publish: (...messages) => Effect
|
|
26
26
|
.gen(function* ($) {
|
|
27
27
|
const requestContext = yield* $(rcc.requestContext);
|
|
28
|
-
const
|
|
29
|
-
const span = Tracer.externalSpan(currentSpan);
|
|
28
|
+
const span = yield* $(Effect.serviceOption(Tracer.ParentSpan));
|
|
30
29
|
return yield* $(Effect
|
|
31
30
|
.forEach(messages, (m) =>
|
|
32
31
|
// we JSON encode, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
33
|
-
S.encode(wireSchema)({ body: m, meta: { requestContext, span } }).pipe(Effect.orDie, Effect
|
|
32
|
+
S.encode(wireSchema)({ body: m, meta: { requestContext, span: Option.getOrUndefined(span) } }).pipe(Effect.orDie, Effect
|
|
34
33
|
.andThen(JSON.stringify),
|
|
35
34
|
// .tap((msg) => info("Publishing Mem Message: " + utils.inspect(msg)))
|
|
36
35
|
Effect.flatMap((_) => q.offer(_))), { discard: true }));
|
|
@@ -41,21 +40,23 @@ export function makeMemQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
|
41
40
|
// we JSON parse, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
42
41
|
Effect
|
|
43
42
|
.sync(() => JSON.parse(msg))
|
|
44
|
-
.pipe(Effect.flatMap(parseDrain), Effect
|
|
45
|
-
.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
43
|
+
.pipe(Effect.flatMap(parseDrain), Effect.orDie, Effect
|
|
44
|
+
.flatMap(({ body, meta }) => {
|
|
45
|
+
let effect = Effect
|
|
46
|
+
.logDebug(`$$ [${queueDrainName}] Processing incoming message`)
|
|
47
|
+
.pipe(Effect.annotateLogs({ body: pretty(body), meta: pretty(meta) }), Effect.zipRight(handleEvent(body)), silenceAndReportError, (_) => setupRequestContext(_, RequestContext.inherit(meta.requestContext, {
|
|
48
|
+
id: RequestId(body.id),
|
|
49
|
+
locale: "en",
|
|
50
|
+
name: NonEmptyString255(`${queueDrainName}.${body._tag}`)
|
|
51
|
+
})), Effect
|
|
52
|
+
.withSpan(`queue.drain: ${queueDrainName}`, {
|
|
53
|
+
attributes: { "queue.name": queueDrainName }
|
|
54
|
+
}));
|
|
55
|
+
if (meta.span) {
|
|
56
|
+
effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span));
|
|
57
|
+
}
|
|
58
|
+
return effect;
|
|
59
|
+
}));
|
|
59
60
|
return yield* $(qDrain
|
|
60
61
|
.take
|
|
61
62
|
.pipe(Effect.flatMap((x) => processMessage(x).pipe(Effect.uninterruptible, Effect.fork, Effect.flatMap(Fiber.join))),
|
|
@@ -66,4 +67,4 @@ export function makeMemQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
|
66
67
|
};
|
|
67
68
|
});
|
|
68
69
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvUXVldWVNYWtlci9tZW1RdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDdkUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3pELE9BQU8sRUFBa0IsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FNMUIsU0FBaUIsRUFDakIsY0FBc0IsRUFDdEIsTUFBMkIsRUFDM0IsV0FBMEM7SUFFMUMsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENB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
|
|
@@ -12,7 +12,7 @@ export declare function makeServiceBusQueue<Evt extends {
|
|
|
12
12
|
id: StringId;
|
|
13
13
|
_tag: string;
|
|
14
14
|
}, EvtE, DrainEvtE>(_queueName: string, queueDrainName: string, schema: S.Schema<Evt, EvtE>, drainSchema: S.Schema<DrainEvt, DrainEvtE>): Effect.Effect<{
|
|
15
|
-
drain: <DrainE, DrainR>(handleEvent: (ks: DrainEvt) => Effect<void, DrainE, DrainR>) => Effect.Effect<never, never, import("effect/Scope").Scope |
|
|
15
|
+
drain: <DrainE, DrainR>(handleEvent: (ks: DrainEvt) => Effect<void, DrainE, DrainR>) => Effect.Effect<never, never, RequestContextContainer | import("effect/Scope").Scope | import("../Store/ContextMapContainer.js").ContextMapContainer | Exclude<Exclude<Exclude<Exclude<DrainR, Tracer.ParentSpan>, never>, Tracer.ParentSpan>, {
|
|
16
16
|
make: Effect<import("@azure/service-bus").ServiceBusReceiver, never, import("effect/Scope").Scope>;
|
|
17
17
|
}>>;
|
|
18
18
|
publish: (messages_0: Evt, ...messages_1: Evt[]) => Effect.Effect<void, never, never>;
|
|
@@ -23,8 +23,6 @@ export declare function makeServiceBusQueue<Evt extends {
|
|
|
23
23
|
* @tsplus static QueueMaker.Ops makeServiceBusLayers
|
|
24
24
|
*/
|
|
25
25
|
export declare function makeServiceBusLayers(url: string, queueName: string, queueDrainName: string): Layer.Layer<import("@azure/service-bus").ServiceBusSender | {
|
|
26
|
-
make: Effect<import("@azure/service-bus").ServiceBusReceiver, never, import("effect/Scope").Scope>;
|
|
27
|
-
* @tsplus static QueueMaker.Ops makeServiceBus
|
|
28
|
-
*/
|
|
26
|
+
make: Effect<import("@azure/service-bus").ServiceBusReceiver, never, import("effect/Scope").Scope>;
|
|
29
27
|
}, never, never>;
|
|
30
28
|
//# sourceMappingURL=sbqueue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sbqueue.d.ts","sourceRoot":"","sources":["../../../src/services/QueueMaker/sbqueue.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAQ,KAAK,
|
|
1
|
+
{"version":3,"file":"sbqueue.d.ts","sourceRoot":"","sources":["../../../src/services/QueueMaker/sbqueue.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAQ,KAAK,EAAU,CAAC,EAAE,MAAM,YAAY,CAAA;AAE3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAIjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAIvE;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC1C,QAAQ,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC/C,IAAI,EACJ,SAAS,EAET,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;yCAmBvB,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;;;;;;mDAsFlE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;;iBAE1F"}
|
|
@@ -2,7 +2,7 @@ import { LiveReceiver, LiveSender, LiveServiceBusClient, Receiver, Sender, subsc
|
|
|
2
2
|
import { captureException } from "@effect-app/infra/errorReporter";
|
|
3
3
|
import { RequestContext } from "@effect-app/infra/RequestContext";
|
|
4
4
|
import { Tracer } from "effect";
|
|
5
|
-
import { Effect, flow, Layer, S } from "effect-app";
|
|
5
|
+
import { Effect, flow, Layer, Option, S } from "effect-app";
|
|
6
6
|
import { RequestId } from "effect-app/ids";
|
|
7
7
|
import { NonEmptyString255, struct } from "effect-app/schema";
|
|
8
8
|
import { pretty } from "effect-app/utils";
|
|
@@ -35,26 +35,27 @@ export function makeServiceBusQueue(_queueName, queueDrainName, schema, drainSch
|
|
|
35
35
|
return Effect
|
|
36
36
|
.sync(() => JSON.parse(messageBody))
|
|
37
37
|
.pipe(Effect.flatMap((x) => parseDrain(x)), Effect.orDie, Effect
|
|
38
|
-
.flatMap(({ body, meta }) =>
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
.flatMap(({ body, meta }) => {
|
|
39
|
+
let effect = Effect
|
|
40
|
+
.logDebug(`$$ [${queueDrainName}] Processing incoming message`)
|
|
41
|
+
.pipe(Effect.annotateLogs({
|
|
42
|
+
body: pretty(body),
|
|
43
|
+
meta: pretty(meta)
|
|
44
|
+
}), Effect.zipRight(handleEvent(body)), Effect.orDie)
|
|
45
|
+
// we silenceAndReportError here, so that the error is reported, and moves into the Exit.
|
|
46
|
+
.pipe(silenceAndReportError, (_) => setupRequestContext(_, RequestContext.inherit(meta.requestContext, {
|
|
47
|
+
id: RequestId(body.id),
|
|
48
|
+
locale: "en",
|
|
49
|
+
name: NonEmptyString255(`${queueDrainName}.${body._tag}`)
|
|
50
|
+
})), Effect
|
|
51
|
+
.withSpan(`queue.drain: ${queueDrainName}`, {
|
|
52
|
+
attributes: { "queue.name": queueDrainName }
|
|
53
|
+
}));
|
|
54
|
+
if (meta.span) {
|
|
55
|
+
effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span));
|
|
56
|
+
}
|
|
57
|
+
return effect;
|
|
43
58
|
}), Effect
|
|
44
|
-
.zipRight(handleEvent(body)), Effect
|
|
45
|
-
.orDie)
|
|
46
|
-
// we silenceAndReportError here, so that the error is reported, and moves into the Exit.
|
|
47
|
-
.pipe(silenceAndReportError, (_) => setupRequestContext(_, RequestContext.inherit(meta.requestContext, {
|
|
48
|
-
id: RequestId(body.id),
|
|
49
|
-
locale: "en",
|
|
50
|
-
name: NonEmptyString255(body._tag)
|
|
51
|
-
})), Effect
|
|
52
|
-
.withSpan("queue.drain", {
|
|
53
|
-
attributes: { "queue.name": queueDrainName },
|
|
54
|
-
parent: meta.span
|
|
55
|
-
? Tracer.externalSpan(meta.span)
|
|
56
|
-
: undefined
|
|
57
|
-
}))), Effect
|
|
58
59
|
// we reportError here, so that we report the error only, and keep flowing
|
|
59
60
|
.tapErrorCause(reportError));
|
|
60
61
|
}
|
|
@@ -68,11 +69,13 @@ export function makeServiceBusQueue(_queueName, queueDrainName, schema, drainSch
|
|
|
68
69
|
publish: (...messages) => Effect
|
|
69
70
|
.gen(function* ($) {
|
|
70
71
|
const requestContext = yield* $(rcc.requestContext);
|
|
71
|
-
const
|
|
72
|
-
const span = Tracer.externalSpan(currentSpan);
|
|
72
|
+
const span = yield* $(Effect.serviceOption(Tracer.ParentSpan));
|
|
73
73
|
return yield* $(Effect
|
|
74
74
|
.promise(() => s.sendMessages(messages.map((m) => ({
|
|
75
|
-
body: JSON.stringify(S.encodeSync(wireSchema)({
|
|
75
|
+
body: JSON.stringify(S.encodeSync(wireSchema)({
|
|
76
|
+
body: m,
|
|
77
|
+
meta: { requestContext, span: Option.getOrUndefined(span) }
|
|
78
|
+
})),
|
|
76
79
|
messageId: m.id, /* correllationid: requestId */
|
|
77
80
|
contentType: "application/json"
|
|
78
81
|
})))));
|
|
@@ -86,4 +89,4 @@ export function makeServiceBusQueue(_queueName, queueDrainName, schema, drainSch
|
|
|
86
89
|
export function makeServiceBusLayers(url, queueName, queueDrainName) {
|
|
87
90
|
return Layer.merge(LiveReceiver(queueDrainName), LiveSender(queueName)).pipe(Layer.provide(LiveServiceBusClient(url)));
|
|
88
91
|
}
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2JxdWV1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9RdWV1ZU1ha2VyL3NicXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixVQUFVLEVBQ1Ysb0JBQW9CLEVBQ3BCLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sdUNBQXVDLENBQUE7QUFFOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ2pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDdkUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGdDQUFnQyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzNGLE9BQU8sRUFBa0IsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQU1qQyxVQUFrQixFQUNsQixjQUFzQixFQUN0QixNQUEyQixFQUMzQixXQUEwQztJQUUxQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDeEIsSUFBSSxFQUFFLE1BQU07UUFD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
|
|
@@ -16,13 +16,13 @@ export declare const QueueMaker: QueueMakerOps;
|
|
|
16
16
|
export declare const QueueMeta: import("@effect/schema/Schema").struct<{
|
|
17
17
|
requestContext: typeof RequestContext;
|
|
18
18
|
span: S.PropertySignature<"?:", {
|
|
19
|
-
readonly sampled
|
|
19
|
+
readonly sampled: boolean;
|
|
20
20
|
readonly spanId: string;
|
|
21
21
|
readonly traceId: string;
|
|
22
22
|
} | undefined, never, "?:", {
|
|
23
|
+
readonly sampled: boolean;
|
|
23
24
|
readonly spanId: string;
|
|
24
25
|
readonly traceId: string;
|
|
25
|
-
readonly sampled?: boolean | undefined;
|
|
26
26
|
} | undefined, false, never>;
|
|
27
27
|
}>;
|
|
28
28
|
//# sourceMappingURL=service.d.ts.map
|
|
@@ -7,7 +7,7 @@ export const QueueMeta = struct({
|
|
|
7
7
|
span: S.optional(struct({
|
|
8
8
|
spanId: S.string,
|
|
9
9
|
traceId: S.string,
|
|
10
|
-
sampled: S.
|
|
10
|
+
sampled: S.boolean
|
|
11
11
|
}))
|
|
12
12
|
});
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9RdWV1ZU1ha2VyL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBaUJ4RCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtCLEVBQUUsQ0FBQTtBQUUzQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDO0lBQzlCLGNBQWMsRUFBRSxjQUFjO0lBQzlCLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUN0QixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU07UUFDaEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNO1FBQ2pCLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztLQUNuQixDQUFDLENBQUM7Q0FDSixDQUFDLENBQUEifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "0.232.
|
|
3
|
+
"version": "0.232.10",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
"pure-rand": "6.1.0",
|
|
20
20
|
"redlock": "^4.2.0",
|
|
21
21
|
"@effect-app/core": "0.169.0",
|
|
22
|
+
"@effect-app/schema": "0.220.3",
|
|
22
23
|
"@effect-app/infra-adapters": "0.153.4",
|
|
23
|
-
"effect-app": "0.201.3"
|
|
24
|
-
"@effect-app/schema": "0.220.3"
|
|
24
|
+
"effect-app": "0.201.3"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@babel/cli": "^7.24.1",
|
|
@@ -2,7 +2,7 @@ import { MemQueue } from "@effect-app/infra-adapters/memQueue"
|
|
|
2
2
|
import { RequestContext } from "@effect-app/infra/RequestContext"
|
|
3
3
|
import { NonEmptyString255, struct } from "@effect-app/schema"
|
|
4
4
|
import { Tracer } from "effect"
|
|
5
|
-
import { Effect, Fiber, flow, S } from "effect-app"
|
|
5
|
+
import { Effect, Fiber, flow, Option, S } from "effect-app"
|
|
6
6
|
import { RequestId } from "effect-app/ids"
|
|
7
7
|
import { pretty } from "effect-app/utils"
|
|
8
8
|
import { setupRequestContext } from "../../api/setupRequest.js"
|
|
@@ -39,13 +39,12 @@ export function makeMemQueue<
|
|
|
39
39
|
Effect
|
|
40
40
|
.gen(function*($) {
|
|
41
41
|
const requestContext = yield* $(rcc.requestContext)
|
|
42
|
-
const
|
|
43
|
-
const span = Tracer.externalSpan(currentSpan)
|
|
42
|
+
const span = yield* $(Effect.serviceOption(Tracer.ParentSpan))
|
|
44
43
|
return yield* $(
|
|
45
44
|
Effect
|
|
46
45
|
.forEach(messages, (m) =>
|
|
47
46
|
// we JSON encode, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
48
|
-
S.encode(wireSchema)({ body: m, meta: { requestContext, span } }).pipe(
|
|
47
|
+
S.encode(wireSchema)({ body: m, meta: { requestContext, span: Option.getOrUndefined(span) } }).pipe(
|
|
49
48
|
Effect.orDie,
|
|
50
49
|
Effect
|
|
51
50
|
.andThen(JSON.stringify),
|
|
@@ -65,11 +64,10 @@ export function makeMemQueue<
|
|
|
65
64
|
.sync(() => JSON.parse(msg))
|
|
66
65
|
.pipe(
|
|
67
66
|
Effect.flatMap(parseDrain),
|
|
67
|
+
Effect.orDie,
|
|
68
68
|
Effect
|
|
69
|
-
.
|
|
70
|
-
|
|
71
|
-
.flatMap(({ body, meta }) =>
|
|
72
|
-
Effect
|
|
69
|
+
.flatMap(({ body, meta }) => {
|
|
70
|
+
let effect = Effect
|
|
73
71
|
.logDebug(`$$ [${queueDrainName}] Processing incoming message`)
|
|
74
72
|
.pipe(
|
|
75
73
|
Effect.annotateLogs({ body: pretty(body), meta: pretty(meta) }),
|
|
@@ -81,18 +79,19 @@ export function makeMemQueue<
|
|
|
81
79
|
RequestContext.inherit(meta.requestContext, {
|
|
82
80
|
id: RequestId(body.id),
|
|
83
81
|
locale: "en" as const,
|
|
84
|
-
name: NonEmptyString255(body._tag)
|
|
82
|
+
name: NonEmptyString255(`${queueDrainName}.${body._tag}`)
|
|
85
83
|
})
|
|
86
84
|
),
|
|
87
85
|
Effect
|
|
88
|
-
.withSpan(
|
|
89
|
-
attributes: { "queue.name": queueDrainName }
|
|
90
|
-
parent: meta.span
|
|
91
|
-
? Tracer.externalSpan(meta.span)
|
|
92
|
-
: undefined
|
|
86
|
+
.withSpan(`queue.drain: ${queueDrainName}`, {
|
|
87
|
+
attributes: { "queue.name": queueDrainName }
|
|
93
88
|
})
|
|
94
89
|
)
|
|
95
|
-
|
|
90
|
+
if (meta.span) {
|
|
91
|
+
effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span))
|
|
92
|
+
}
|
|
93
|
+
return effect
|
|
94
|
+
})
|
|
96
95
|
)
|
|
97
96
|
return yield* $(
|
|
98
97
|
qDrain
|
|
@@ -10,7 +10,7 @@ import type {} from "@azure/service-bus"
|
|
|
10
10
|
import { captureException } from "@effect-app/infra/errorReporter"
|
|
11
11
|
import { RequestContext } from "@effect-app/infra/RequestContext"
|
|
12
12
|
import { Tracer } from "effect"
|
|
13
|
-
import { Effect, flow, Layer, S } from "effect-app"
|
|
13
|
+
import { Effect, flow, Layer, Option, S } from "effect-app"
|
|
14
14
|
import { RequestId } from "effect-app/ids"
|
|
15
15
|
import type { StringId } from "effect-app/schema"
|
|
16
16
|
import { NonEmptyString255, struct } from "effect-app/schema"
|
|
@@ -63,18 +63,16 @@ export function makeServiceBusQueue<
|
|
|
63
63
|
Effect.flatMap((x) => parseDrain(x)),
|
|
64
64
|
Effect.orDie,
|
|
65
65
|
Effect
|
|
66
|
-
.flatMap(({ body, meta }) =>
|
|
67
|
-
Effect
|
|
66
|
+
.flatMap(({ body, meta }) => {
|
|
67
|
+
let effect = Effect
|
|
68
68
|
.logDebug(`$$ [${queueDrainName}] Processing incoming message`)
|
|
69
69
|
.pipe(
|
|
70
70
|
Effect.annotateLogs({
|
|
71
71
|
body: pretty(body),
|
|
72
72
|
meta: pretty(meta)
|
|
73
73
|
}),
|
|
74
|
-
Effect
|
|
75
|
-
|
|
76
|
-
Effect
|
|
77
|
-
.orDie
|
|
74
|
+
Effect.zipRight(handleEvent(body)),
|
|
75
|
+
Effect.orDie
|
|
78
76
|
)
|
|
79
77
|
// we silenceAndReportError here, so that the error is reported, and moves into the Exit.
|
|
80
78
|
.pipe(
|
|
@@ -85,18 +83,19 @@ export function makeServiceBusQueue<
|
|
|
85
83
|
RequestContext.inherit(meta.requestContext, {
|
|
86
84
|
id: RequestId(body.id),
|
|
87
85
|
locale: "en" as const,
|
|
88
|
-
name: NonEmptyString255(body._tag)
|
|
86
|
+
name: NonEmptyString255(`${queueDrainName}.${body._tag}`)
|
|
89
87
|
})
|
|
90
88
|
),
|
|
91
89
|
Effect
|
|
92
|
-
.withSpan(
|
|
93
|
-
attributes: { "queue.name": queueDrainName }
|
|
94
|
-
parent: meta.span
|
|
95
|
-
? Tracer.externalSpan(meta.span)
|
|
96
|
-
: undefined
|
|
90
|
+
.withSpan(`queue.drain: ${queueDrainName}`, {
|
|
91
|
+
attributes: { "queue.name": queueDrainName }
|
|
97
92
|
})
|
|
98
93
|
)
|
|
99
|
-
|
|
94
|
+
if (meta.span) {
|
|
95
|
+
effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span))
|
|
96
|
+
}
|
|
97
|
+
return effect
|
|
98
|
+
}),
|
|
100
99
|
Effect
|
|
101
100
|
// we reportError here, so that we report the error only, and keep flowing
|
|
102
101
|
.tapErrorCause(reportError)
|
|
@@ -117,15 +116,17 @@ export function makeServiceBusQueue<
|
|
|
117
116
|
Effect
|
|
118
117
|
.gen(function*($) {
|
|
119
118
|
const requestContext = yield* $(rcc.requestContext)
|
|
120
|
-
const
|
|
121
|
-
const span = Tracer.externalSpan(currentSpan)
|
|
119
|
+
const span = yield* $(Effect.serviceOption(Tracer.ParentSpan))
|
|
122
120
|
return yield* $(
|
|
123
121
|
Effect
|
|
124
122
|
.promise(() =>
|
|
125
123
|
s.sendMessages(
|
|
126
124
|
messages.map((m) => ({
|
|
127
125
|
body: JSON.stringify(
|
|
128
|
-
S.encodeSync(wireSchema)({
|
|
126
|
+
S.encodeSync(wireSchema)({
|
|
127
|
+
body: m,
|
|
128
|
+
meta: { requestContext, span: Option.getOrUndefined(span) }
|
|
129
|
+
})
|
|
129
130
|
),
|
|
130
131
|
messageId: m.id, /* correllationid: requestId */
|
|
131
132
|
contentType: "application/json"
|