@kronos-ts/rabbitmq 0.2.1 → 0.3.1
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/amqp-query-updates-transport.d.ts +75 -0
- package/dist/amqp-query-updates-transport.d.ts.map +1 -0
- package/dist/amqp-query-updates-transport.js +105 -0
- package/dist/amqp-query-updates-transport.js.map +1 -0
- package/dist/distributed-subscriber-registry.d.ts +132 -0
- package/dist/distributed-subscriber-registry.d.ts.map +1 -0
- package/dist/distributed-subscriber-registry.js +192 -0
- package/dist/distributed-subscriber-registry.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/query-bus.d.ts +21 -5
- package/dist/query-bus.d.ts.map +1 -1
- package/dist/query-bus.js +181 -17
- package/dist/query-bus.js.map +1 -1
- package/dist/rabbitmq.d.ts +5 -4
- package/dist/rabbitmq.d.ts.map +1 -1
- package/dist/rabbitmq.js +10 -4
- package/dist/rabbitmq.js.map +1 -1
- package/dist/topology.d.ts +6 -0
- package/dist/topology.d.ts.map +1 -1
- package/dist/topology.js +10 -0
- package/dist/topology.js.map +1 -1
- package/package.json +1 -1
- package/src/distributed-subscriber-registry.ts +286 -0
- package/src/index.ts +8 -0
- package/src/query-bus.ts +202 -21
- package/src/rabbitmq.ts +10 -4
- package/src/topology.ts +18 -0
package/dist/query-bus.js
CHANGED
|
@@ -1,18 +1,93 @@
|
|
|
1
|
+
import { applySubscriptionFilter, createUpdateHandler, runAfterCommitOrImmediately, runInNewUoW, } from "@kronos-ts/messaging";
|
|
1
2
|
import { qualifiedNameToString } from "@kronos-ts/common";
|
|
2
|
-
import { runInNewUoW } from "@kronos-ts/messaging";
|
|
3
3
|
/**
|
|
4
4
|
* Distributed query bus decorator.
|
|
5
5
|
*
|
|
6
|
-
* Direct request/reply queries (`query` + `subscribe`) route over
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* Direct request/reply queries (`query` + `subscribe`) route over the
|
|
7
|
+
* request/reply transport.
|
|
8
|
+
*
|
|
9
|
+
* Subscription queries use a distributed-mirror model. Every subscribe
|
|
10
|
+
* publishes a `claim` over the gossip fanout exchange so every instance
|
|
11
|
+
* learns about it; every unsubscribe publishes a `release`. Each instance
|
|
12
|
+
* keeps a cluster-wide `Map<subId, SubscriberRecord>` mirror.
|
|
13
|
+
*
|
|
14
|
+
* `emitUpdate` walks the mirror locally (it holds every cluster-wide
|
|
15
|
+
* subscriber's payload), applies the filter — function predicates work
|
|
16
|
+
* because evaluation happens colocated with the payload, not over the wire —
|
|
17
|
+
* and routes per-subscriber delivery via the registry. Local subs are
|
|
18
|
+
* dispatched in-process; remote subs receive a `DeliverEnvelope` on the
|
|
19
|
+
* owner's direct queue.
|
|
20
|
+
*
|
|
21
|
+
* The same model handles `completeSubscription` and
|
|
22
|
+
* `completeSubscriptionExceptionally`.
|
|
23
|
+
*
|
|
24
|
+
* Falls back to local-only behaviour when no `subscriberRegistry` is supplied.
|
|
11
25
|
*/
|
|
12
26
|
export function createRabbitMqQueryBus(options) {
|
|
13
27
|
const localHandlers = new Set();
|
|
14
|
-
const { localSegment, transport, config } = options;
|
|
15
|
-
|
|
28
|
+
const { localSegment, transport, subscriberRegistry, config } = options;
|
|
29
|
+
// UpdateHandlers for subs owned BY this instance, keyed by subId.
|
|
30
|
+
const localOwnedHandlers = new Map();
|
|
31
|
+
function applyDelivery(envelope) {
|
|
32
|
+
const handler = localOwnedHandlers.get(envelope.subId);
|
|
33
|
+
if (!handler)
|
|
34
|
+
return;
|
|
35
|
+
if (envelope.kind === "update") {
|
|
36
|
+
if (!handler.active) {
|
|
37
|
+
localOwnedHandlers.delete(envelope.subId);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const accepted = handler.offer(envelope.update);
|
|
41
|
+
if (!accepted) {
|
|
42
|
+
handler.completeExceptionally(new Error("Subscription query update buffer overflow"));
|
|
43
|
+
localOwnedHandlers.delete(envelope.subId);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if (envelope.kind === "complete") {
|
|
47
|
+
handler.complete();
|
|
48
|
+
localOwnedHandlers.delete(envelope.subId);
|
|
49
|
+
}
|
|
50
|
+
else if (envelope.kind === "completeExceptionally") {
|
|
51
|
+
const error = Object.assign(new Error(envelope.error.message), {
|
|
52
|
+
name: envelope.error.name ?? "RemoteSubscriptionError",
|
|
53
|
+
});
|
|
54
|
+
handler.completeExceptionally(error);
|
|
55
|
+
localOwnedHandlers.delete(envelope.subId);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (subscriberRegistry) {
|
|
59
|
+
subscriberRegistry.setDeliverHandler(applyDelivery);
|
|
60
|
+
}
|
|
61
|
+
function registerSubscription(message, bufferSize) {
|
|
62
|
+
const subId = message.identifier;
|
|
63
|
+
if (localOwnedHandlers.has(subId)) {
|
|
64
|
+
throw new Error(`Subscription query already registered for identifier "${subId}"`);
|
|
65
|
+
}
|
|
66
|
+
const handler = createUpdateHandler(message, bufferSize);
|
|
67
|
+
localOwnedHandlers.set(subId, handler);
|
|
68
|
+
if (subscriberRegistry) {
|
|
69
|
+
void subscriberRegistry
|
|
70
|
+
.claim({
|
|
71
|
+
subId,
|
|
72
|
+
queryName: qualifiedNameToString(message.name),
|
|
73
|
+
payload: message.payload,
|
|
74
|
+
})
|
|
75
|
+
.catch(() => { });
|
|
76
|
+
}
|
|
77
|
+
return handler;
|
|
78
|
+
}
|
|
79
|
+
function unregisterSubscription(message) {
|
|
80
|
+
const subId = message.identifier;
|
|
81
|
+
const existing = localOwnedHandlers.get(subId);
|
|
82
|
+
if (!existing)
|
|
83
|
+
return;
|
|
84
|
+
localOwnedHandlers.delete(subId);
|
|
85
|
+
existing.complete();
|
|
86
|
+
if (subscriberRegistry) {
|
|
87
|
+
void subscriberRegistry.release(subId).catch(() => { });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const bus = {
|
|
16
91
|
async query(message) {
|
|
17
92
|
const queryName = qualifiedNameToString(message.name);
|
|
18
93
|
const preferLocal = config.queries.preferLocalHandlers && !config.queries.alwaysUseDistributedBus;
|
|
@@ -46,23 +121,112 @@ export function createRabbitMqQueryBus(options) {
|
|
|
46
121
|
}
|
|
47
122
|
});
|
|
48
123
|
},
|
|
49
|
-
// Subscription queries stay process-local — see the doc comment above.
|
|
50
124
|
subscriptionQuery(message, bufferSize) {
|
|
51
|
-
|
|
125
|
+
const updateHandler = registerSubscription(message, bufferSize);
|
|
126
|
+
const initialResult = bus.query(message);
|
|
127
|
+
return {
|
|
128
|
+
initialResult,
|
|
129
|
+
updates: updateHandler.iterable,
|
|
130
|
+
close: () => unregisterSubscription(message),
|
|
131
|
+
};
|
|
52
132
|
},
|
|
53
133
|
subscribeToUpdates(message, bufferSize) {
|
|
54
|
-
|
|
134
|
+
const updateHandler = registerSubscription(message, bufferSize);
|
|
135
|
+
return {
|
|
136
|
+
[Symbol.asyncIterator]: () => updateHandler.iterable[Symbol.asyncIterator](),
|
|
137
|
+
close: () => unregisterSubscription(message),
|
|
138
|
+
};
|
|
55
139
|
},
|
|
56
|
-
emitUpdate(queryName, filter, update) {
|
|
57
|
-
|
|
140
|
+
async emitUpdate(queryName, filter, update) {
|
|
141
|
+
runAfterCommitOrImmediately(() => {
|
|
142
|
+
if (subscriberRegistry) {
|
|
143
|
+
for (const record of subscriberRegistry.records()) {
|
|
144
|
+
if (record.queryName !== queryName)
|
|
145
|
+
continue;
|
|
146
|
+
if (!applySubscriptionFilter(filter, record.payload))
|
|
147
|
+
continue;
|
|
148
|
+
void subscriberRegistry
|
|
149
|
+
.deliver({ kind: "update", subId: record.subId, update })
|
|
150
|
+
.catch(() => { });
|
|
151
|
+
}
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
// Local-only mode: filter and offer against the local subscriber set.
|
|
155
|
+
for (const [id, handler] of localOwnedHandlers) {
|
|
156
|
+
if (!handler.active) {
|
|
157
|
+
localOwnedHandlers.delete(id);
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
const handlerQueryName = qualifiedNameToString(handler.query.name);
|
|
161
|
+
if (handlerQueryName !== queryName)
|
|
162
|
+
continue;
|
|
163
|
+
if (!applySubscriptionFilter(filter, handler.query.payload))
|
|
164
|
+
continue;
|
|
165
|
+
const accepted = handler.offer(update);
|
|
166
|
+
if (!accepted) {
|
|
167
|
+
handler.completeExceptionally(new Error("Subscription query update buffer overflow"));
|
|
168
|
+
localOwnedHandlers.delete(id);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
});
|
|
58
172
|
},
|
|
59
|
-
completeSubscription(queryName, filter) {
|
|
60
|
-
|
|
173
|
+
async completeSubscription(queryName, filter) {
|
|
174
|
+
runAfterCommitOrImmediately(() => {
|
|
175
|
+
if (subscriberRegistry) {
|
|
176
|
+
for (const record of subscriberRegistry.records()) {
|
|
177
|
+
if (record.queryName !== queryName)
|
|
178
|
+
continue;
|
|
179
|
+
if (filter && !applySubscriptionFilter(filter, record.payload))
|
|
180
|
+
continue;
|
|
181
|
+
void subscriberRegistry
|
|
182
|
+
.deliver({ kind: "complete", subId: record.subId })
|
|
183
|
+
.catch(() => { });
|
|
184
|
+
}
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
for (const [id, handler] of localOwnedHandlers) {
|
|
188
|
+
const handlerQueryName = qualifiedNameToString(handler.query.name);
|
|
189
|
+
if (handlerQueryName !== queryName)
|
|
190
|
+
continue;
|
|
191
|
+
if (filter && !applySubscriptionFilter(filter, handler.query.payload))
|
|
192
|
+
continue;
|
|
193
|
+
handler.complete();
|
|
194
|
+
localOwnedHandlers.delete(id);
|
|
195
|
+
}
|
|
196
|
+
});
|
|
61
197
|
},
|
|
62
|
-
completeSubscriptionExceptionally(queryName, error, filter) {
|
|
63
|
-
|
|
198
|
+
async completeSubscriptionExceptionally(queryName, error, filter) {
|
|
199
|
+
runAfterCommitOrImmediately(() => {
|
|
200
|
+
if (subscriberRegistry) {
|
|
201
|
+
const serialized = serializeError(error) ?? { message: String(error) };
|
|
202
|
+
for (const record of subscriberRegistry.records()) {
|
|
203
|
+
if (record.queryName !== queryName)
|
|
204
|
+
continue;
|
|
205
|
+
if (filter && !applySubscriptionFilter(filter, record.payload))
|
|
206
|
+
continue;
|
|
207
|
+
void subscriberRegistry
|
|
208
|
+
.deliver({
|
|
209
|
+
kind: "completeExceptionally",
|
|
210
|
+
subId: record.subId,
|
|
211
|
+
error: serialized,
|
|
212
|
+
})
|
|
213
|
+
.catch(() => { });
|
|
214
|
+
}
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
for (const [id, handler] of localOwnedHandlers) {
|
|
218
|
+
const handlerQueryName = qualifiedNameToString(handler.query.name);
|
|
219
|
+
if (handlerQueryName !== queryName)
|
|
220
|
+
continue;
|
|
221
|
+
if (filter && !applySubscriptionFilter(filter, handler.query.payload))
|
|
222
|
+
continue;
|
|
223
|
+
handler.completeExceptionally(error);
|
|
224
|
+
localOwnedHandlers.delete(id);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
64
227
|
},
|
|
65
228
|
};
|
|
229
|
+
return bus;
|
|
66
230
|
}
|
|
67
231
|
function serializeError(error) {
|
|
68
232
|
if (error instanceof Error) {
|
package/dist/query-bus.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-bus.js","sourceRoot":"","sources":["../src/query-bus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"query-bus.js","sourceRoot":"","sources":["../src/query-bus.ts"],"names":[],"mappings":"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"}
|
package/dist/rabbitmq.d.ts
CHANGED
|
@@ -41,10 +41,11 @@ export declare function resolveRabbitMqConfig(app: App, config: RabbitMqExtensio
|
|
|
41
41
|
/**
|
|
42
42
|
* RabbitMQ distributed messaging extension.
|
|
43
43
|
*
|
|
44
|
-
* Wraps the command and query buses with RabbitMQ-backed
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
44
|
+
* Wraps the command and query buses with RabbitMQ-backed transports.
|
|
45
|
+
* Direct request/reply commands and queries share one channel each; a third
|
|
46
|
+
* channel hosts the subscription-query update broadcast (topic exchange plus
|
|
47
|
+
* an exclusive per-instance queue). All three share a single broker
|
|
48
|
+
* connection.
|
|
48
49
|
*/
|
|
49
50
|
export declare function rabbitMq(config: RabbitMqExtensionConfig): (app: App) => void;
|
|
50
51
|
//# sourceMappingURL=rabbitmq.d.ts.map
|
package/dist/rabbitmq.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmq.d.ts","sourceRoot":"","sources":["../src/rabbitmq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,2BAA2B,EAAE,KAAK,sBAAsB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"rabbitmq.d.ts","sourceRoot":"","sources":["../src/rabbitmq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,2BAA2B,EAAE,KAAK,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAQxF,MAAM,WAAW,6BAA6B;IAC5C,8FAA8F;IAC9F,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,qFAAqF;IACrF,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAA;IAC1C,0EAA0E;IAC1E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACnC;AAED,MAAM,WAAW,2BAA2B;IAC1C,8FAA8F;IAC9F,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,mFAAmF;IACnF,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAA;IAC1C,wEAAwE;IACxE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,4FAA4F;IAC5F,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,wDAAwD;IACxD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CACrC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAA;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,6BAA6B,CAAA;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,2BAA2B,CAAA;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAA;CACrC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAA;IACjE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,6BAA6B,CAAC,CAAA;IAC1D,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,2BAA2B,CAAC,CAAA;IACvD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAA;CAC9C;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,uBAAuB,GAAG,sBAAsB,CAoBvG;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,uBAAuB,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAiC5E"}
|
package/dist/rabbitmq.js
CHANGED
|
@@ -3,6 +3,7 @@ import { createRabbitMqCommandBus } from "./command-bus.js";
|
|
|
3
3
|
import { createRabbitMqQueryBus } from "./query-bus.js";
|
|
4
4
|
import { AmqpRabbitMqCommandTransport } from "./amqp-command-transport.js";
|
|
5
5
|
import { AmqpRabbitMqQueryTransport } from "./amqp-query-transport.js";
|
|
6
|
+
import { AmqpDistributedSubscriberRegistry } from "./distributed-subscriber-registry.js";
|
|
6
7
|
import { createAmqpConnection } from "./connection.js";
|
|
7
8
|
export function resolveRabbitMqConfig(app, config) {
|
|
8
9
|
return {
|
|
@@ -28,10 +29,11 @@ export function resolveRabbitMqConfig(app, config) {
|
|
|
28
29
|
/**
|
|
29
30
|
* RabbitMQ distributed messaging extension.
|
|
30
31
|
*
|
|
31
|
-
* Wraps the command and query buses with RabbitMQ-backed
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
32
|
+
* Wraps the command and query buses with RabbitMQ-backed transports.
|
|
33
|
+
* Direct request/reply commands and queries share one channel each; a third
|
|
34
|
+
* channel hosts the subscription-query update broadcast (topic exchange plus
|
|
35
|
+
* an exclusive per-instance queue). All three share a single broker
|
|
36
|
+
* connection.
|
|
35
37
|
*/
|
|
36
38
|
export function rabbitMq(config) {
|
|
37
39
|
return (app) => {
|
|
@@ -39,6 +41,7 @@ export function rabbitMq(config) {
|
|
|
39
41
|
const connection = createAmqpConnection(resolved.url);
|
|
40
42
|
const commandTransport = new AmqpRabbitMqCommandTransport(resolved, connection);
|
|
41
43
|
const queryTransport = new AmqpRabbitMqQueryTransport(resolved, connection);
|
|
44
|
+
const subscriberRegistry = new AmqpDistributedSubscriberRegistry(resolved, connection);
|
|
42
45
|
app.decorate("commandBus", (localSegment) => createRabbitMqCommandBus({
|
|
43
46
|
localSegment,
|
|
44
47
|
transport: commandTransport,
|
|
@@ -47,12 +50,15 @@ export function rabbitMq(config) {
|
|
|
47
50
|
app.decorate("queryBus", (localSegment) => createRabbitMqQueryBus({
|
|
48
51
|
localSegment,
|
|
49
52
|
transport: queryTransport,
|
|
53
|
+
subscriberRegistry,
|
|
50
54
|
config: resolved,
|
|
51
55
|
}));
|
|
52
56
|
app.onStart("connect", () => commandTransport.connect());
|
|
53
57
|
app.onStart("connect", () => queryTransport.connect());
|
|
58
|
+
app.onStart("connect", () => subscriberRegistry.connect());
|
|
54
59
|
app.onStop("connect", () => commandTransport.close());
|
|
55
60
|
app.onStop("connect", () => queryTransport.close());
|
|
61
|
+
app.onStop("connect", () => subscriberRegistry.close());
|
|
56
62
|
app.onStop("connect", () => connection.close());
|
|
57
63
|
};
|
|
58
64
|
}
|
package/dist/rabbitmq.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmq.js","sourceRoot":"","sources":["../src/rabbitmq.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAA+B,MAAM,eAAe,CAAA;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAA;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AA4CtD,MAAM,UAAU,qBAAqB,CAAC,GAAQ,EAAE,MAA+B;IAC7E,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,QAAQ,EAAE,2BAA2B,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;QACpE,QAAQ,EAAE;YACR,mBAAmB,EAAE,MAAM,CAAC,QAAQ,EAAE,mBAAmB,IAAI,IAAI;YACjE,uBAAuB,EAAE,MAAM,CAAC,QAAQ,EAAE,uBAAuB,IAAI,KAAK;YAC1E,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,IAAI,MAAM;SAC9D;QACD,OAAO,EAAE;YACP,mBAAmB,EAAE,MAAM,CAAC,OAAO,EAAE,mBAAmB,IAAI,IAAI;YAChE,uBAAuB,EAAE,MAAM,CAAC,OAAO,EAAE,uBAAuB,IAAI,KAAK;YACzE,gBAAgB,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,IAAI,MAAM;SAC7D;QACD,KAAK,EAAE;YACL,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,IAAI,IAAI;YAC5C,kBAAkB,EAAE,MAAM,CAAC,KAAK,EAAE,kBAAkB,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,QAAQ,MAAM;SACrG;KACF,CAAA;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"rabbitmq.js","sourceRoot":"","sources":["../src/rabbitmq.ts"],"names":[],"mappings":"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"}
|
package/dist/topology.d.ts
CHANGED
|
@@ -4,15 +4,21 @@ export interface RabbitMqTopologyConfig {
|
|
|
4
4
|
readonly prefix?: string;
|
|
5
5
|
readonly commandsExchange?: string;
|
|
6
6
|
readonly queriesExchange?: string;
|
|
7
|
+
readonly subscribersGossipExchange?: string;
|
|
8
|
+
readonly subscribersDirectExchange?: string;
|
|
7
9
|
readonly durableQueues?: boolean;
|
|
8
10
|
}
|
|
9
11
|
export interface RabbitMqTopologyNames {
|
|
10
12
|
readonly commandsExchange: string;
|
|
11
13
|
readonly queriesExchange: string;
|
|
14
|
+
readonly subscribersGossipExchange: string;
|
|
15
|
+
readonly subscribersDirectExchange: string;
|
|
12
16
|
commandRoutingKey(commandName: QualifiedName | string): string;
|
|
13
17
|
commandQueue(commandName: QualifiedName | string): string;
|
|
14
18
|
queryRoutingKey(queryName: QualifiedName | string): string;
|
|
15
19
|
queryQueue(queryName: QualifiedName | string): string;
|
|
20
|
+
subscribersGossipQueue(): string;
|
|
21
|
+
subscribersDirectQueue(): string;
|
|
16
22
|
commandReplyQueue(): string;
|
|
17
23
|
queryReplyQueue(): string;
|
|
18
24
|
}
|
package/dist/topology.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../src/topology.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,iBAAiB,CAAC,WAAW,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAAA;IAC9D,YAAY,CAAC,WAAW,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAAA;IACzD,eAAe,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAAA;IAC1D,UAAU,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAAA;IACrD,iBAAiB,IAAI,MAAM,CAAA;IAC3B,eAAe,IAAI,MAAM,CAAA;CAC1B;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,cAAc,EACxB,MAAM,GAAE,sBAA2B,GAClC,qBAAqB,
|
|
1
|
+
{"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../src/topology.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAC3C,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAC3C,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAA;IAC1C,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAA;IAC1C,iBAAiB,CAAC,WAAW,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAAA;IAC9D,YAAY,CAAC,WAAW,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAAA;IACzD,eAAe,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAAA;IAC1D,UAAU,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAAA;IACrD,sBAAsB,IAAI,MAAM,CAAA;IAChC,sBAAsB,IAAI,MAAM,CAAA;IAChC,iBAAiB,IAAI,MAAM,CAAA;IAC3B,eAAe,IAAI,MAAM,CAAA;CAC1B;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,cAAc,EACxB,MAAM,GAAE,sBAA2B,GAClC,qBAAqB,CAyCvB"}
|
package/dist/topology.js
CHANGED
|
@@ -4,9 +4,13 @@ export function createRabbitMqTopologyNames(identity, config = {}) {
|
|
|
4
4
|
const instance = sanitizeSegment(identity.instanceId);
|
|
5
5
|
const commandsExchange = config.commandsExchange ?? `${prefix}.commands`;
|
|
6
6
|
const queriesExchange = config.queriesExchange ?? `${prefix}.queries`;
|
|
7
|
+
const subscribersGossipExchange = config.subscribersGossipExchange ?? `${prefix}.subscribers.gossip`;
|
|
8
|
+
const subscribersDirectExchange = config.subscribersDirectExchange ?? `${prefix}.subscribers.direct`;
|
|
7
9
|
return {
|
|
8
10
|
commandsExchange,
|
|
9
11
|
queriesExchange,
|
|
12
|
+
subscribersGossipExchange,
|
|
13
|
+
subscribersDirectExchange,
|
|
10
14
|
commandRoutingKey(commandName) {
|
|
11
15
|
return messageName(commandName);
|
|
12
16
|
},
|
|
@@ -19,6 +23,12 @@ export function createRabbitMqTopologyNames(identity, config = {}) {
|
|
|
19
23
|
queryQueue(queryName) {
|
|
20
24
|
return `${prefix}.queries.${service}.${sanitizeMessageName(messageName(queryName))}`;
|
|
21
25
|
},
|
|
26
|
+
subscribersGossipQueue() {
|
|
27
|
+
return `${prefix}.subscribers.gossip.${service}.${instance}`;
|
|
28
|
+
},
|
|
29
|
+
subscribersDirectQueue() {
|
|
30
|
+
return `${prefix}.subscribers.direct.${service}.${instance}`;
|
|
31
|
+
},
|
|
22
32
|
commandReplyQueue() {
|
|
23
33
|
return `${prefix}.replies.${service}.${instance}`;
|
|
24
34
|
},
|
package/dist/topology.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topology.js","sourceRoot":"","sources":["../src/topology.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"topology.js","sourceRoot":"","sources":["../src/topology.ts"],"names":[],"mappings":"AA2BA,MAAM,UAAU,2BAA2B,CACzC,QAAwB,EACxB,SAAiC,EAAE;IAEnC,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAA;IACzD,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IACrD,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IACrD,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,GAAG,MAAM,WAAW,CAAA;IACxE,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,GAAG,MAAM,UAAU,CAAA;IACrE,MAAM,yBAAyB,GAC7B,MAAM,CAAC,yBAAyB,IAAI,GAAG,MAAM,qBAAqB,CAAA;IACpE,MAAM,yBAAyB,GAC7B,MAAM,CAAC,yBAAyB,IAAI,GAAG,MAAM,qBAAqB,CAAA;IAEpE,OAAO;QACL,gBAAgB;QAChB,eAAe;QACf,yBAAyB;QACzB,yBAAyB;QACzB,iBAAiB,CAAC,WAAW;YAC3B,OAAO,WAAW,CAAC,WAAW,CAAC,CAAA;QACjC,CAAC;QACD,YAAY,CAAC,WAAW;YACtB,OAAO,GAAG,MAAM,aAAa,OAAO,IAAI,mBAAmB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAA;QACzF,CAAC;QACD,eAAe,CAAC,SAAS;YACvB,OAAO,WAAW,CAAC,SAAS,CAAC,CAAA;QAC/B,CAAC;QACD,UAAU,CAAC,SAAS;YAClB,OAAO,GAAG,MAAM,YAAY,OAAO,IAAI,mBAAmB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAA;QACtF,CAAC;QACD,sBAAsB;YACpB,OAAO,GAAG,MAAM,uBAAuB,OAAO,IAAI,QAAQ,EAAE,CAAA;QAC9D,CAAC;QACD,sBAAsB;YACpB,OAAO,GAAG,MAAM,uBAAuB,OAAO,IAAI,QAAQ,EAAE,CAAA;QAC9D,CAAC;QACD,iBAAiB;YACf,OAAO,GAAG,MAAM,YAAY,OAAO,IAAI,QAAQ,EAAE,CAAA;QACnD,CAAC;QACD,eAAe;YACb,OAAO,GAAG,MAAM,kBAAkB,OAAO,IAAI,QAAQ,EAAE,CAAA;QACzD,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAA4B;IAC/C,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IACzC,MAAM,KAAK,GAAG,IAA4E,CAAA;IAC1F,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,CAAA;IAC3C,OAAO,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAChF,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAA;AAC/C,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC5B,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAC5E,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAA;AACrC,CAAC"}
|