@zdavison/matador 2.0.8 → 2.0.9
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/package.json +1 -1
- package/src/index.ts +1 -0
- package/dist/checkpoint/context.d.ts +0 -59
- package/dist/checkpoint/context.d.ts.map +0 -1
- package/dist/checkpoint/context.js +0 -140
- package/dist/checkpoint/context.test.d.ts +0 -2
- package/dist/checkpoint/context.test.d.ts.map +0 -1
- package/dist/checkpoint/context.test.js +0 -424
- package/dist/checkpoint/index.d.ts +0 -7
- package/dist/checkpoint/index.d.ts.map +0 -1
- package/dist/checkpoint/index.js +0 -6
- package/dist/checkpoint/stores/memory.d.ts +0 -29
- package/dist/checkpoint/stores/memory.d.ts.map +0 -1
- package/dist/checkpoint/stores/memory.js +0 -39
- package/dist/checkpoint/stores/noop.d.ts +0 -14
- package/dist/checkpoint/stores/noop.d.ts.map +0 -1
- package/dist/checkpoint/stores/noop.js +0 -18
- package/dist/checkpoint/stores/stores.test.d.ts +0 -2
- package/dist/checkpoint/stores/stores.test.d.ts.map +0 -1
- package/dist/checkpoint/stores/stores.test.js +0 -146
- package/dist/checkpoint/types.d.ts +0 -119
- package/dist/checkpoint/types.d.ts.map +0 -1
- package/dist/checkpoint/types.js +0 -1
- package/dist/codec/codec.d.ts +0 -29
- package/dist/codec/codec.d.ts.map +0 -1
- package/dist/codec/codec.js +0 -15
- package/dist/codec/header-aware-codec.d.ts +0 -36
- package/dist/codec/header-aware-codec.d.ts.map +0 -1
- package/dist/codec/header-aware-codec.js +0 -1
- package/dist/codec/index.d.ts +0 -6
- package/dist/codec/index.d.ts.map +0 -1
- package/dist/codec/index.js +0 -3
- package/dist/codec/json-codec.d.ts +0 -13
- package/dist/codec/json-codec.d.ts.map +0 -1
- package/dist/codec/json-codec.js +0 -64
- package/dist/codec/rabbitmq-codec.d.ts +0 -28
- package/dist/codec/rabbitmq-codec.d.ts.map +0 -1
- package/dist/codec/rabbitmq-codec.js +0 -242
- package/dist/codec/rabbitmq-codec.test.d.ts +0 -2
- package/dist/codec/rabbitmq-codec.test.d.ts.map +0 -1
- package/dist/codec/rabbitmq-codec.test.js +0 -433
- package/dist/core/fanout.d.ts +0 -59
- package/dist/core/fanout.d.ts.map +0 -1
- package/dist/core/fanout.js +0 -121
- package/dist/core/fanout.test.d.ts +0 -2
- package/dist/core/fanout.test.d.ts.map +0 -1
- package/dist/core/fanout.test.js +0 -1054
- package/dist/core/index.d.ts +0 -7
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -3
- package/dist/core/matador.d.ts +0 -133
- package/dist/core/matador.d.ts.map +0 -1
- package/dist/core/matador.js +0 -228
- package/dist/core/matador.test.d.ts +0 -2
- package/dist/core/matador.test.d.ts.map +0 -1
- package/dist/core/matador.test.js +0 -446
- package/dist/core/shutdown.d.ts +0 -78
- package/dist/core/shutdown.d.ts.map +0 -1
- package/dist/core/shutdown.js +0 -111
- package/dist/core/shutdown.test.d.ts +0 -2
- package/dist/core/shutdown.test.d.ts.map +0 -1
- package/dist/core/shutdown.test.js +0 -524
- package/dist/errors/checkpoint-errors.d.ts +0 -30
- package/dist/errors/checkpoint-errors.d.ts.map +0 -1
- package/dist/errors/checkpoint-errors.js +0 -49
- package/dist/errors/has-description.d.ts +0 -18
- package/dist/errors/has-description.d.ts.map +0 -1
- package/dist/errors/has-description.js +0 -9
- package/dist/errors/index.d.ts +0 -6
- package/dist/errors/index.d.ts.map +0 -1
- package/dist/errors/index.js +0 -22
- package/dist/errors/matador-errors.d.ts +0 -183
- package/dist/errors/matador-errors.d.ts.map +0 -1
- package/dist/errors/matador-errors.js +0 -376
- package/dist/errors/retry-errors.d.ts +0 -102
- package/dist/errors/retry-errors.d.ts.map +0 -1
- package/dist/errors/retry-errors.js +0 -155
- package/dist/errors/retry-errors.test.d.ts +0 -2
- package/dist/errors/retry-errors.test.d.ts.map +0 -1
- package/dist/errors/retry-errors.test.js +0 -136
- package/dist/hooks/index.d.ts +0 -4
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -2
- package/dist/hooks/safe-hooks.d.ts +0 -32
- package/dist/hooks/safe-hooks.d.ts.map +0 -1
- package/dist/hooks/safe-hooks.js +0 -120
- package/dist/hooks/types.d.ts +0 -172
- package/dist/hooks/types.d.ts.map +0 -1
- package/dist/hooks/types.js +0 -9
- package/dist/index.cjs +0 -3228
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -23
- package/dist/index.d.ts +0 -23
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -31
- package/dist/index.js.map +0 -1
- package/dist/pipeline/index.d.ts +0 -3
- package/dist/pipeline/index.d.ts.map +0 -1
- package/dist/pipeline/index.js +0 -1
- package/dist/pipeline/pipeline.d.ts +0 -63
- package/dist/pipeline/pipeline.d.ts.map +0 -1
- package/dist/pipeline/pipeline.js +0 -273
- package/dist/pipeline/pipeline.test.d.ts +0 -2
- package/dist/pipeline/pipeline.test.d.ts.map +0 -1
- package/dist/pipeline/pipeline.test.js +0 -1112
- package/dist/retry/index.d.ts +0 -4
- package/dist/retry/index.d.ts.map +0 -1
- package/dist/retry/index.js +0 -1
- package/dist/retry/policy.d.ts +0 -43
- package/dist/retry/policy.d.ts.map +0 -1
- package/dist/retry/policy.js +0 -1
- package/dist/retry/standard-policy.d.ts +0 -44
- package/dist/retry/standard-policy.d.ts.map +0 -1
- package/dist/retry/standard-policy.js +0 -102
- package/dist/retry/standard-policy.test.d.ts +0 -2
- package/dist/retry/standard-policy.test.d.ts.map +0 -1
- package/dist/retry/standard-policy.test.js +0 -196
- package/dist/schema/index.d.ts +0 -4
- package/dist/schema/index.d.ts.map +0 -1
- package/dist/schema/index.js +0 -2
- package/dist/schema/registry.d.ts +0 -63
- package/dist/schema/registry.d.ts.map +0 -1
- package/dist/schema/registry.js +0 -174
- package/dist/schema/registry.test.d.ts +0 -2
- package/dist/schema/registry.test.d.ts.map +0 -1
- package/dist/schema/registry.test.js +0 -278
- package/dist/schema/types.d.ts +0 -158
- package/dist/schema/types.d.ts.map +0 -1
- package/dist/schema/types.js +0 -74
- package/dist/schema/types.test.d.ts +0 -2
- package/dist/schema/types.test.d.ts.map +0 -1
- package/dist/schema/types.test.js +0 -242
- package/dist/topology/builder.d.ts +0 -80
- package/dist/topology/builder.d.ts.map +0 -1
- package/dist/topology/builder.js +0 -165
- package/dist/topology/builder.test.d.ts +0 -2
- package/dist/topology/builder.test.d.ts.map +0 -1
- package/dist/topology/builder.test.js +0 -360
- package/dist/topology/index.d.ts +0 -5
- package/dist/topology/index.d.ts.map +0 -1
- package/dist/topology/index.js +0 -2
- package/dist/topology/types.d.ts +0 -128
- package/dist/topology/types.d.ts.map +0 -1
- package/dist/topology/types.js +0 -28
- package/dist/transport/capabilities.d.ts +0 -66
- package/dist/transport/capabilities.d.ts.map +0 -1
- package/dist/transport/capabilities.js +0 -18
- package/dist/transport/connection-manager.d.ts +0 -95
- package/dist/transport/connection-manager.d.ts.map +0 -1
- package/dist/transport/connection-manager.js +0 -144
- package/dist/transport/index.d.ts +0 -11
- package/dist/transport/index.d.ts.map +0 -1
- package/dist/transport/index.js +0 -5
- package/dist/transport/local/local-transport.d.ts +0 -62
- package/dist/transport/local/local-transport.d.ts.map +0 -1
- package/dist/transport/local/local-transport.js +0 -241
- package/dist/transport/local/local-transport.test.d.ts +0 -2
- package/dist/transport/local/local-transport.test.d.ts.map +0 -1
- package/dist/transport/local/local-transport.test.js +0 -192
- package/dist/transport/multi/multi-transport.d.ts +0 -94
- package/dist/transport/multi/multi-transport.d.ts.map +0 -1
- package/dist/transport/multi/multi-transport.js +0 -184
- package/dist/transport/multi/multi-transport.test.d.ts +0 -2
- package/dist/transport/multi/multi-transport.test.d.ts.map +0 -1
- package/dist/transport/multi/multi-transport.test.js +0 -236
- package/dist/transport/rabbitmq/rabbitmq-transport.d.ts +0 -83
- package/dist/transport/rabbitmq/rabbitmq-transport.d.ts.map +0 -1
- package/dist/transport/rabbitmq/rabbitmq-transport.js +0 -541
- package/dist/transport/rabbitmq/rabbitmq-transport.test.d.ts +0 -2
- package/dist/transport/rabbitmq/rabbitmq-transport.test.d.ts.map +0 -1
- package/dist/transport/rabbitmq/rabbitmq-transport.test.js +0 -100
- package/dist/transport/transport.d.ts +0 -152
- package/dist/transport/transport.d.ts.map +0 -1
- package/dist/transport/transport.js +0 -1
- package/dist/types/common.d.ts +0 -41
- package/dist/types/common.d.ts.map +0 -1
- package/dist/types/common.js +0 -12
- package/dist/types/dispatcher.d.ts +0 -14
- package/dist/types/dispatcher.d.ts.map +0 -1
- package/dist/types/dispatcher.js +0 -1
- package/dist/types/envelope.d.ts +0 -131
- package/dist/types/envelope.d.ts.map +0 -1
- package/dist/types/envelope.js +0 -99
- package/dist/types/event.d.ts +0 -92
- package/dist/types/event.d.ts.map +0 -1
- package/dist/types/event.js +0 -26
- package/dist/types/event.test.d.ts +0 -2
- package/dist/types/event.test.d.ts.map +0 -1
- package/dist/types/event.test.js +0 -130
- package/dist/types/index.d.ts +0 -11
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -4
- package/dist/types/subscriber.d.ts +0 -227
- package/dist/types/subscriber.d.ts.map +0 -1
- package/dist/types/subscriber.js +0 -97
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
import { beforeEach, describe, expect, it, mock } from 'bun:test';
|
|
2
|
-
import { createEnvelope } from '../../types/index.js';
|
|
3
|
-
import { LocalTransport } from '../local/local-transport.js';
|
|
4
|
-
import { MultiTransport } from './multi-transport.js';
|
|
5
|
-
describe('MultiTransport', () => {
|
|
6
|
-
let primary;
|
|
7
|
-
let secondary;
|
|
8
|
-
let transport;
|
|
9
|
-
beforeEach(() => {
|
|
10
|
-
primary = new LocalTransport();
|
|
11
|
-
secondary = new LocalTransport();
|
|
12
|
-
transport = new MultiTransport({
|
|
13
|
-
transports: [primary, secondary],
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
describe('constructor', () => {
|
|
17
|
-
it('should throw if no transports provided', () => {
|
|
18
|
-
expect(() => new MultiTransport({ transports: [] })).toThrow('At least one transport is required');
|
|
19
|
-
});
|
|
20
|
-
it('should set name based on transport names', () => {
|
|
21
|
-
expect(transport.name).toBe('multi(local,local)');
|
|
22
|
-
});
|
|
23
|
-
it('should use primary transport capabilities', () => {
|
|
24
|
-
expect(transport.capabilities).toBe(primary.capabilities);
|
|
25
|
-
});
|
|
26
|
-
it('should expose primary transport', () => {
|
|
27
|
-
expect(transport.primary).toBe(primary);
|
|
28
|
-
});
|
|
29
|
-
it('should expose all transports', () => {
|
|
30
|
-
expect(transport.transports).toEqual([primary, secondary]);
|
|
31
|
-
});
|
|
32
|
-
it('should default fallbackEnabled to true', () => {
|
|
33
|
-
expect(transport.fallbackEnabled).toBe(true);
|
|
34
|
-
});
|
|
35
|
-
it('should allow disabling fallback', () => {
|
|
36
|
-
const noFallback = new MultiTransport({
|
|
37
|
-
transports: [primary, secondary],
|
|
38
|
-
fallbackEnabled: false,
|
|
39
|
-
});
|
|
40
|
-
expect(noFallback.fallbackEnabled).toBe(false);
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
describe('connection', () => {
|
|
44
|
-
it('should start disconnected', () => {
|
|
45
|
-
expect(transport.isConnected()).toBe(false);
|
|
46
|
-
});
|
|
47
|
-
it('should connect all transports', async () => {
|
|
48
|
-
await transport.connect();
|
|
49
|
-
expect(transport.isConnected()).toBe(true);
|
|
50
|
-
expect(primary.isConnected()).toBe(true);
|
|
51
|
-
expect(secondary.isConnected()).toBe(true);
|
|
52
|
-
});
|
|
53
|
-
it('should disconnect all transports', async () => {
|
|
54
|
-
await transport.connect();
|
|
55
|
-
await transport.disconnect();
|
|
56
|
-
expect(transport.isConnected()).toBe(false);
|
|
57
|
-
expect(primary.isConnected()).toBe(false);
|
|
58
|
-
expect(secondary.isConnected()).toBe(false);
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
describe('topology', () => {
|
|
62
|
-
it('should apply topology to all transports', async () => {
|
|
63
|
-
const topology = {
|
|
64
|
-
namespace: 'test',
|
|
65
|
-
queues: [{ name: 'events' }],
|
|
66
|
-
deadLetter: {
|
|
67
|
-
unhandled: { enabled: true },
|
|
68
|
-
undeliverable: { enabled: true },
|
|
69
|
-
},
|
|
70
|
-
retry: {
|
|
71
|
-
enabled: true,
|
|
72
|
-
defaultDelayMs: 1000,
|
|
73
|
-
maxDelayMs: 30000,
|
|
74
|
-
},
|
|
75
|
-
};
|
|
76
|
-
await transport.connect();
|
|
77
|
-
await transport.applyTopology(topology);
|
|
78
|
-
// Both transports should have the queue
|
|
79
|
-
expect(primary.getQueueSize('test.events')).toBe(0);
|
|
80
|
-
expect(secondary.getQueueSize('test.events')).toBe(0);
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
describe('send - primary success', () => {
|
|
84
|
-
beforeEach(async () => {
|
|
85
|
-
await transport.connect();
|
|
86
|
-
});
|
|
87
|
-
it('should send to primary transport when it succeeds', async () => {
|
|
88
|
-
const envelope = createTestEnvelope();
|
|
89
|
-
await transport.send('test-queue', envelope);
|
|
90
|
-
expect(primary.getQueueSize('test-queue')).toBe(1);
|
|
91
|
-
expect(secondary.getQueueSize('test-queue')).toBe(0);
|
|
92
|
-
});
|
|
93
|
-
it('should not call onEnqueueFallback when primary succeeds', async () => {
|
|
94
|
-
const onEnqueueFallback = mock(() => { });
|
|
95
|
-
const transportWithCallback = new MultiTransport({ transports: [primary, secondary] }, { onEnqueueFallback });
|
|
96
|
-
await transportWithCallback.connect();
|
|
97
|
-
const envelope = createTestEnvelope();
|
|
98
|
-
await transportWithCallback.send('test-queue', envelope);
|
|
99
|
-
expect(onEnqueueFallback).not.toHaveBeenCalled();
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
describe('send - fallback', () => {
|
|
103
|
-
beforeEach(async () => {
|
|
104
|
-
await transport.connect();
|
|
105
|
-
});
|
|
106
|
-
it('should fallback when primary fails', async () => {
|
|
107
|
-
// Make primary fail
|
|
108
|
-
await primary.disconnect();
|
|
109
|
-
const envelope = createTestEnvelope();
|
|
110
|
-
await transport.send('test-queue', envelope);
|
|
111
|
-
expect(secondary.getQueueSize('test-queue')).toBe(1);
|
|
112
|
-
});
|
|
113
|
-
it('should call onEnqueueFallback when fallback is used', async () => {
|
|
114
|
-
const fallbackContexts = [];
|
|
115
|
-
const transportWithCallback = new MultiTransport({ transports: [primary, secondary] }, { onEnqueueFallback: (ctx) => fallbackContexts.push(ctx) });
|
|
116
|
-
await transportWithCallback.connect();
|
|
117
|
-
// Make primary fail
|
|
118
|
-
await primary.disconnect();
|
|
119
|
-
const envelope = createTestEnvelope();
|
|
120
|
-
await transportWithCallback.send('test-queue', envelope);
|
|
121
|
-
expect(fallbackContexts).toHaveLength(1);
|
|
122
|
-
const ctx = fallbackContexts[0];
|
|
123
|
-
expect(ctx.failedTransport).toBe('local');
|
|
124
|
-
expect(ctx.nextTransport).toBe('local');
|
|
125
|
-
expect(ctx.queue).toBe('test-queue');
|
|
126
|
-
expect(ctx.envelope).toBe(envelope);
|
|
127
|
-
expect(ctx.error.message).toContain('is not connected');
|
|
128
|
-
});
|
|
129
|
-
it('should throw when all transports fail', async () => {
|
|
130
|
-
await primary.disconnect();
|
|
131
|
-
await secondary.disconnect();
|
|
132
|
-
const envelope = createTestEnvelope();
|
|
133
|
-
await expect(transport.send('test-queue', envelope)).rejects.toThrow('All transports failed');
|
|
134
|
-
});
|
|
135
|
-
it('should try transports in order', async () => {
|
|
136
|
-
const third = new LocalTransport();
|
|
137
|
-
const multiTransport = new MultiTransport({
|
|
138
|
-
transports: [primary, secondary, third],
|
|
139
|
-
});
|
|
140
|
-
await multiTransport.connect();
|
|
141
|
-
// Make primary and secondary fail
|
|
142
|
-
await primary.disconnect();
|
|
143
|
-
await secondary.disconnect();
|
|
144
|
-
const envelope = createTestEnvelope();
|
|
145
|
-
await multiTransport.send('test-queue', envelope);
|
|
146
|
-
expect(third.getQueueSize('test-queue')).toBe(1);
|
|
147
|
-
});
|
|
148
|
-
it('should not fallback when fallbackEnabled is false', async () => {
|
|
149
|
-
const noFallback = new MultiTransport({
|
|
150
|
-
transports: [primary, secondary],
|
|
151
|
-
fallbackEnabled: false,
|
|
152
|
-
});
|
|
153
|
-
await noFallback.connect();
|
|
154
|
-
// Make primary fail
|
|
155
|
-
await primary.disconnect();
|
|
156
|
-
const envelope = createTestEnvelope();
|
|
157
|
-
await expect(noFallback.send('test-queue', envelope)).rejects.toThrow('is not connected');
|
|
158
|
-
// Secondary should not have received the message
|
|
159
|
-
expect(secondary.getQueueSize('test-queue')).toBe(0);
|
|
160
|
-
});
|
|
161
|
-
it('should send to primary when fallbackEnabled is false and primary succeeds', async () => {
|
|
162
|
-
const noFallback = new MultiTransport({
|
|
163
|
-
transports: [primary, secondary],
|
|
164
|
-
fallbackEnabled: false,
|
|
165
|
-
});
|
|
166
|
-
await noFallback.connect();
|
|
167
|
-
const envelope = createTestEnvelope();
|
|
168
|
-
await noFallback.send('test-queue', envelope);
|
|
169
|
-
expect(primary.getQueueSize('test-queue')).toBe(1);
|
|
170
|
-
expect(secondary.getQueueSize('test-queue')).toBe(0);
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
describe('subscribe', () => {
|
|
174
|
-
beforeEach(async () => {
|
|
175
|
-
await transport.connect();
|
|
176
|
-
});
|
|
177
|
-
it('should receive messages from primary transport', async () => {
|
|
178
|
-
const receivedMessages = [];
|
|
179
|
-
await transport.subscribe('test-queue', async (envelope) => {
|
|
180
|
-
receivedMessages.push(envelope);
|
|
181
|
-
});
|
|
182
|
-
// Send directly to primary (simulating normal operation)
|
|
183
|
-
await primary.send('test-queue', createTestEnvelope());
|
|
184
|
-
expect(receivedMessages).toHaveLength(1);
|
|
185
|
-
});
|
|
186
|
-
it('should receive messages that fell back to secondary transport', async () => {
|
|
187
|
-
const receivedMessages = [];
|
|
188
|
-
// Subscribe through MultiTransport
|
|
189
|
-
await transport.subscribe('test-queue', async (envelope) => {
|
|
190
|
-
receivedMessages.push(envelope);
|
|
191
|
-
});
|
|
192
|
-
// Make primary fail for sends
|
|
193
|
-
await primary.disconnect();
|
|
194
|
-
// Send through MultiTransport - should fall back to secondary
|
|
195
|
-
const envelope = createTestEnvelope();
|
|
196
|
-
await transport.send('test-queue', envelope);
|
|
197
|
-
// Message went to secondary transport, subscriber should still receive it
|
|
198
|
-
expect(receivedMessages).toHaveLength(1);
|
|
199
|
-
expect(receivedMessages[0].id).toBe(envelope.id);
|
|
200
|
-
});
|
|
201
|
-
});
|
|
202
|
-
describe('complete', () => {
|
|
203
|
-
beforeEach(async () => {
|
|
204
|
-
await transport.connect();
|
|
205
|
-
});
|
|
206
|
-
it('should complete using primary transport', async () => {
|
|
207
|
-
await primary.send('test-queue', createTestEnvelope());
|
|
208
|
-
const received = await primary.receiveOne('test-queue');
|
|
209
|
-
expect(received).not.toBeNull();
|
|
210
|
-
await transport.complete(received.receipt);
|
|
211
|
-
expect(primary.getCompleted()).toHaveLength(1);
|
|
212
|
-
});
|
|
213
|
-
});
|
|
214
|
-
describe('sendToDeadLetter', () => {
|
|
215
|
-
beforeEach(async () => {
|
|
216
|
-
await transport.connect();
|
|
217
|
-
});
|
|
218
|
-
it('should send to dead letter using primary transport', async () => {
|
|
219
|
-
const envelope = createTestEnvelope();
|
|
220
|
-
await primary.send('test-queue', envelope);
|
|
221
|
-
const received = await primary.receiveOne('test-queue');
|
|
222
|
-
expect(received).not.toBeNull();
|
|
223
|
-
await transport.sendToDeadLetter(received.receipt, 'dlq', envelope, 'test error');
|
|
224
|
-
expect(primary.getQueueSize('test-queue')).toBe(0);
|
|
225
|
-
expect(primary.getQueueSize('test-queue.dlq')).toBe(1);
|
|
226
|
-
});
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
function createTestEnvelope() {
|
|
230
|
-
return createEnvelope({
|
|
231
|
-
eventKey: 'test.event',
|
|
232
|
-
targetSubscriber: 'test-subscriber',
|
|
233
|
-
data: { test: 'data' },
|
|
234
|
-
importance: 'should-investigate',
|
|
235
|
-
});
|
|
236
|
-
}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { type Logger } from '../../hooks/index.js';
|
|
2
|
-
import type { Topology } from '../../topology/types.js';
|
|
3
|
-
import type { Envelope } from '../../types/index.js';
|
|
4
|
-
import type { TransportCapabilities } from '../capabilities.js';
|
|
5
|
-
import { type ConnectionManagerConfig } from '../connection-manager.js';
|
|
6
|
-
import type { MessageHandler, MessageReceipt, SendOptions, SubscribeOptions, Subscription, Transport } from '../transport.js';
|
|
7
|
-
/**
|
|
8
|
-
* Configuration options for the RabbitMQ transport.
|
|
9
|
-
*/
|
|
10
|
-
export interface RabbitMQTransportConfig {
|
|
11
|
-
/** RabbitMQ connection URL */
|
|
12
|
-
readonly url: string;
|
|
13
|
-
/** Connection name displayed in RabbitMQ management UI */
|
|
14
|
-
readonly connectionName: string;
|
|
15
|
-
/** Connection manager configuration */
|
|
16
|
-
readonly connection?: Partial<ConnectionManagerConfig> | undefined;
|
|
17
|
-
/** Use quorum queues for durability (default: true) */
|
|
18
|
-
readonly quorumQueues?: boolean | undefined;
|
|
19
|
-
/** Default prefetch count per consumer (default: 10) */
|
|
20
|
-
readonly defaultPrefetch?: number | undefined;
|
|
21
|
-
/** Enable the delayed message exchange plugin if available (default: true) */
|
|
22
|
-
readonly enableDelayedMessages?: boolean | undefined;
|
|
23
|
-
/** Logger for transport events (defaults to console) */
|
|
24
|
-
readonly logger?: Logger | undefined;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Redacts credentials from an AMQP URL.
|
|
28
|
-
* Replaces username and password with '****' regardless of their length.
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* redactAmqpUrl('amqp://user:pass@host:5672') // 'amqp://****:****@host:5672'
|
|
32
|
-
*/
|
|
33
|
-
export declare function redactAmqpUrl(url: string): string;
|
|
34
|
-
/**
|
|
35
|
-
* RabbitMQ transport implementation using amqplib.
|
|
36
|
-
*/
|
|
37
|
-
export declare class RabbitMQTransport implements Transport {
|
|
38
|
-
readonly name = "rabbitmq";
|
|
39
|
-
private _capabilities;
|
|
40
|
-
get capabilities(): TransportCapabilities;
|
|
41
|
-
private connection;
|
|
42
|
-
private publishChannel;
|
|
43
|
-
private readonly connectionManager;
|
|
44
|
-
private readonly queueChannels;
|
|
45
|
-
private topology;
|
|
46
|
-
private readonly codec;
|
|
47
|
-
private readonly config;
|
|
48
|
-
private readonly logger;
|
|
49
|
-
private delayedExchangeAvailable;
|
|
50
|
-
constructor(config: RabbitMQTransportConfig);
|
|
51
|
-
connect(): Promise<void>;
|
|
52
|
-
disconnect(): Promise<void>;
|
|
53
|
-
isConnected(): boolean;
|
|
54
|
-
applyTopology(topology: Topology): Promise<void>;
|
|
55
|
-
send(queue: string, envelope: Envelope, options?: SendOptions): Promise<Transport['name']>;
|
|
56
|
-
subscribe(queue: string, handler: MessageHandler, options?: SubscribeOptions): Promise<Subscription>;
|
|
57
|
-
complete(receipt: MessageReceipt): Promise<void>;
|
|
58
|
-
sendToDeadLetter(receipt: MessageReceipt, dlqName: string, envelope: Envelope, reason: string): Promise<void>;
|
|
59
|
-
/**
|
|
60
|
-
* Gets or creates a dedicated channel for a queue subscription.
|
|
61
|
-
*
|
|
62
|
-
* We create separate channels per subscribed queue to enable independent
|
|
63
|
-
* prefetch/concurrency control.
|
|
64
|
-
*/
|
|
65
|
-
private getOrCreateQueueChannel;
|
|
66
|
-
private doConnect;
|
|
67
|
-
private doDisconnect;
|
|
68
|
-
private setupDelayedExchange;
|
|
69
|
-
private assertWorkQueue;
|
|
70
|
-
private assertRetryQueue;
|
|
71
|
-
private assertDeadLetterQueues;
|
|
72
|
-
private getMainExchangeName;
|
|
73
|
-
private getDLXExchangeName;
|
|
74
|
-
private getDelayedExchangeName;
|
|
75
|
-
private getAttemptNumber;
|
|
76
|
-
/**
|
|
77
|
-
* Gets the native delivery count for poison message detection.
|
|
78
|
-
* This tracks how many times the message was delivered without acknowledgment,
|
|
79
|
-
* which helps detect crash loops.
|
|
80
|
-
*/
|
|
81
|
-
private getDeliveryCount;
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=rabbitmq-transport.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmq-transport.d.ts","sourceRoot":"","sources":["../../../src/transport/rabbitmq/rabbitmq-transport.ts"],"names":[],"mappings":"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"}
|