Skip to content

Commit

Permalink
feat: allow to track a published message by its ID
Browse files Browse the repository at this point in the history
Updated message storage mechanism to allow to track a message by its ID.
 Messages are now stored as independent entities. A message now has a status
 which allow us to know for example if it has been already delivered or is
 currently waiting in the pending queue.

The new message storage mechanism also improve the Redis memory space usage by
 allowing internally to reference a message by its ID instead of using the
 whole message alongside with its data during different operations. This should
 help to reduce the amount of data in use at different steps during message
 processing.

Another improvement regards RedisSMQ configuration. A new configuration
 component has been introduced to allow setting up RedisSMQ from one place and
 only once instead of configuring each component separately when creating an
 instance.

RedisSMQ API has been improved. The following components has been removed:
 MessageManager, QueueManager, DirectExchange, TopicExchange, FanOutExchange,
 FanOutExchangeManager. New components has been introduced: ExchangeDirect, ExchangeTopic,
 ExchangeFanOut, Namespace, Queue, QueueMessages, QueueAcknowledgedMessages,
 QueueDeadLetteredMessages, QueuePendingMessages, QueueScheduledMessages,
 QueueRateLimit.

Finally, RedisSMQ typings have been also improved.
  • Loading branch information
weyoss committed Nov 11, 2023
1 parent f2f6af1 commit 5f702d2
Show file tree
Hide file tree
Showing 143 changed files with 5,627 additions and 5,444 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,4 @@ lerna-debug.log*
!.vscode/extensions.json

misc/benchmarks
docker-compose.yml
25 changes: 19 additions & 6 deletions index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,23 @@
import { ICallback } from '../redis-smq-common';
import { _destroyCommonRedisClient } from './src/common/_get-common-redis-client';

export * from './types/index';
export { events } from './src/common/events/events';
export { Consumer } from './src/lib/consumer/consumer';
export { Producer } from './src/lib/producer/producer';
export { Message } from './src/lib/message/message';
export { MessageManager } from './src/lib/message-manager/message-manager';
export { QueueManager } from './src/lib/queue-manager/queue-manager';
export { DirectExchange } from './src/lib/exchange/direct-exchange';
export { TopicExchange } from './src/lib/exchange/topic-exchange';
export { FanOutExchange } from './src/lib/exchange/fan-out-exchange';
export { FanOutExchangeManager } from './src/lib/exchange/fan-out-exchange-manager';
export { ExchangeDirect } from './src/lib/exchange/exchange-direct';
export { ExchangeTopic } from './src/lib/exchange/exchange-topic';
export { ExchangeFanOut } from './src/lib/exchange/exchange-fan-out';
export { Namespace } from './src/lib/queue/namespace';
export { Queue } from './src/lib/queue/queue/queue';
export { QueueMessages } from './src/lib/queue/queue-messages/queue-messages';
export { QueueAcknowledgedMessages } from './src/lib/queue/queue-acknowledged-messages';
export { QueueDeadLetteredMessages } from './src/lib/queue/queue-dead-lettered-messages';
export { QueuePendingMessages } from './src/lib/queue/queue-pending-messages';
export { QueueScheduledMessages } from './src/lib/queue/queue-scheduled-messages';
export { QueueRateLimit } from './src/lib/queue/queue-rate-limit';
export { Configuration } from './src/config/configuration';
export function disconnect(cb: ICallback<void>): void {
_destroyCommonRedisClient(cb);
}
Loading

0 comments on commit 5f702d2

Please sign in to comment.