@@ -40,7 +40,7 @@ export class MemoryQueue implements Transport<InMemoryMessage> {
40
40
41
41
private queue : TransportMessage < InMemoryMessage > [ ] = [ ]
42
42
private queuePushed : EventEmitter = new EventEmitter ( )
43
- private deadLetterQueue : TransportMessage < InMemoryMessage > [ ] = [ ]
43
+ private _deadLetterQueue : TransportMessage < InMemoryMessage > [ ] = [ ]
44
44
private messagesWithHandlers : { [ key : string ] : { } }
45
45
private logger : Logger
46
46
private coreDependencies : CoreDependencies
@@ -116,6 +116,11 @@ export class MemoryQueue implements Transport<InMemoryMessage> {
116
116
117
117
async deleteMessage ( message : TransportMessage < InMemoryMessage > ) : Promise < void > {
118
118
const messageIndex = this . queue . indexOf ( message )
119
+ if ( messageIndex < 0 ) {
120
+ // actions like .fail() will cause the message to already be deleted
121
+ this . logger . debug ( 'Message already deleted' , { message, messageIndex } )
122
+ return
123
+ }
119
124
this . logger . debug ( 'Deleting message' , { queueDepth : this . depth , messageIndex } )
120
125
this . queue . splice ( messageIndex , 1 )
121
126
this . logger . debug ( 'Message Deleted' , { queueDepth : this . depth } )
@@ -141,7 +146,15 @@ export class MemoryQueue implements Transport<InMemoryMessage> {
141
146
}
142
147
143
148
get deadLetterQueueDepth ( ) : number {
144
- return this . deadLetterQueue . length
149
+ return this . _deadLetterQueue . length
150
+ }
151
+
152
+ /**
153
+ * Returns all messages sitting in the dead letter queue. This is a copy of the queue
154
+ * so mutative actions on this array will have no consequence.
155
+ */
156
+ get deadLetterQueue ( ) : TransportMessage < InMemoryMessage > [ ] {
157
+ return [ ...this . _deadLetterQueue ]
145
158
}
146
159
147
160
/**
@@ -153,7 +166,7 @@ export class MemoryQueue implements Transport<InMemoryMessage> {
153
166
154
167
155
168
private async sendToDeadLetterQueue ( message : TransportMessage < InMemoryMessage > ) : Promise < void > {
156
- this . deadLetterQueue . push ( message )
169
+ this . _deadLetterQueue . push ( message )
157
170
await this . deleteMessage ( message )
158
171
}
159
172
0 commit comments