@node-ts/bus-core
Advanced tools
Comparing version 1.0.8 to 1.0.9
@@ -1,3 +0,1 @@ | ||
export * from './service-bus/bus'; | ||
export * from './service-bus/bus-instance'; | ||
export { Transport, TransportMessage, TransportConfiguration, DEFAULT_DEAD_LETTER_QUEUE_NAME } from './transport'; | ||
@@ -11,1 +9,2 @@ export * from './handler'; | ||
export * from './logger'; | ||
export * from './service-bus'; |
@@ -5,4 +5,2 @@ "use strict"; | ||
const tslib_1 = require("tslib"); | ||
(0, tslib_1.__exportStar)(require("./service-bus/bus"), exports); | ||
(0, tslib_1.__exportStar)(require("./service-bus/bus-instance"), exports); | ||
var transport_1 = require("./transport"); | ||
@@ -17,2 +15,3 @@ Object.defineProperty(exports, "DEFAULT_DEAD_LETTER_QUEUE_NAME", { enumerable: true, get: function () { return transport_1.DEFAULT_DEAD_LETTER_QUEUE_NAME; } }); | ||
(0, tslib_1.__exportStar)(require("./logger"), exports); | ||
(0, tslib_1.__exportStar)(require("./service-bus"), exports); | ||
//# sourceMappingURL=index.js.map |
@@ -34,3 +34,3 @@ import { Transport } from './transport'; | ||
private queuePushed; | ||
private deadLetterQueue; | ||
private _deadLetterQueue; | ||
private messagesWithHandlers; | ||
@@ -54,2 +54,7 @@ private logger; | ||
/** | ||
* Returns all messages sitting in the dead letter queue. This is a copy of the queue | ||
* so mutative actions on this array will have no consequence. | ||
*/ | ||
get deadLetterQueue(): TransportMessage<InMemoryMessage>[]; | ||
/** | ||
* Gets the number of messages in the queue, excluding those in flight | ||
@@ -56,0 +61,0 @@ */ |
@@ -21,3 +21,3 @@ "use strict"; | ||
this.queuePushed = new stream_1.EventEmitter(); | ||
this.deadLetterQueue = []; | ||
this._deadLetterQueue = []; | ||
} | ||
@@ -84,2 +84,7 @@ prepare(coreDependencies) { | ||
const messageIndex = this.queue.indexOf(message); | ||
if (messageIndex < 0) { | ||
// actions like .fail() will cause the message to already be deleted | ||
this.logger.debug('Message already deleted', { message, messageIndex }); | ||
return; | ||
} | ||
this.logger.debug('Deleting message', { queueDepth: this.depth, messageIndex }); | ||
@@ -107,5 +112,12 @@ this.queue.splice(messageIndex, 1); | ||
get deadLetterQueueDepth() { | ||
return this.deadLetterQueue.length; | ||
return this._deadLetterQueue.length; | ||
} | ||
/** | ||
* Returns all messages sitting in the dead letter queue. This is a copy of the queue | ||
* so mutative actions on this array will have no consequence. | ||
*/ | ||
get deadLetterQueue() { | ||
return [...this._deadLetterQueue]; | ||
} | ||
/** | ||
* Gets the number of messages in the queue, excluding those in flight | ||
@@ -117,3 +129,3 @@ */ | ||
async sendToDeadLetterQueue(message) { | ||
this.deadLetterQueue.push(message); | ||
this._deadLetterQueue.push(message); | ||
await this.deleteMessage(message); | ||
@@ -120,0 +132,0 @@ } |
{ | ||
"name": "@node-ts/bus-core", | ||
"version": "1.0.8", | ||
"version": "1.0.9", | ||
"description": "A service bus for message-based, distributed node applications", | ||
@@ -48,3 +48,3 @@ "main": "./dist/index.js", | ||
], | ||
"gitHead": "0aad4040a7521b404384a2a8210633da1ac0b701" | ||
"gitHead": "18c461690e686eee3a5e68e373e14ef9a6c692dc" | ||
} |
@@ -1,3 +0,1 @@ | ||
export * from './service-bus/bus' | ||
export * from './service-bus/bus-instance' | ||
export { | ||
@@ -16,1 +14,2 @@ Transport, | ||
export * from './logger' | ||
export * from './service-bus' |
@@ -8,4 +8,6 @@ import { MemoryQueue, InMemoryMessage, RETRY_LIMIT } from './memory-queue' | ||
import { Logger, LoggerFactory } from '../logger' | ||
import { DefaultHandlerRegistry, HandlerRegistry } from '../handler' | ||
import { DefaultHandlerRegistry, handlerFor, HandlerRegistry } from '../handler' | ||
import { JsonSerializer, MessageSerializer } from '../serialization' | ||
import EventEmitter from 'events' | ||
import { Bus } from '../service-bus/bus' | ||
@@ -167,3 +169,22 @@ const event = new TestEvent() | ||
}) | ||
it('should only fail the handled message', async () => { | ||
const emitter = new EventEmitter() | ||
const bus = await Bus.configure() | ||
.withConcurrency(1) | ||
.withHandler(handlerFor(TestEvent, async () => { | ||
await bus.send(new TestCommand()) | ||
await bus.fail() | ||
})) | ||
.withHandler(handlerFor(TestCommand, () => { emitter.emit('done') })) | ||
.initialize() | ||
await bus.start() | ||
const completion = new Promise<void>(resolve => emitter.once('done', resolve)) | ||
await bus.publish(new TestEvent()) | ||
await completion | ||
await bus.dispose() | ||
}) | ||
}) | ||
}) |
@@ -43,3 +43,3 @@ import { Transport } from './transport' | ||
private queuePushed: EventEmitter = new EventEmitter() | ||
private deadLetterQueue: TransportMessage<InMemoryMessage>[] = [] | ||
private _deadLetterQueue: TransportMessage<InMemoryMessage>[] = [] | ||
private messagesWithHandlers: { [key: string]: {} } | ||
@@ -120,2 +120,7 @@ private logger: Logger | ||
const messageIndex = this.queue.indexOf(message) | ||
if (messageIndex < 0) { | ||
// actions like .fail() will cause the message to already be deleted | ||
this.logger.debug('Message already deleted', { message, messageIndex }) | ||
return | ||
} | ||
this.logger.debug('Deleting message', { queueDepth: this.depth, messageIndex }) | ||
@@ -146,6 +151,14 @@ this.queue.splice(messageIndex, 1) | ||
get deadLetterQueueDepth (): number { | ||
return this.deadLetterQueue.length | ||
return this._deadLetterQueue.length | ||
} | ||
/** | ||
* Returns all messages sitting in the dead letter queue. This is a copy of the queue | ||
* so mutative actions on this array will have no consequence. | ||
*/ | ||
get deadLetterQueue (): TransportMessage<InMemoryMessage>[] { | ||
return [...this._deadLetterQueue] | ||
} | ||
/** | ||
* Gets the number of messages in the queue, excluding those in flight | ||
@@ -159,3 +172,3 @@ */ | ||
private async sendToDeadLetterQueue (message: TransportMessage<InMemoryMessage>): Promise<void> { | ||
this.deadLetterQueue.push(message) | ||
this._deadLetterQueue.push(message) | ||
await this.deleteMessage(message) | ||
@@ -162,0 +175,0 @@ } |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
353228
6920