Extends: MessageQueue
Description
The MemoryMessageQueue class is used to create message queues that send and receive messages within the same process by using shared memory.
Important points
- This queue is typically used for testing to mock real queues.
Configuration parameters
- name: name of the message queue
References
- *:logger:*:*:1.0 - (optional) ILogger components to pass log messages
- *:counters:*:*:1.0 - (optional) ICounters components to pass collected measurements
Constructors
Creates a new instance of the message queue.
See also MessagingCapabilities
publicconstructor(name?: string)
- name: string - (optional) a queue name.
Instance methods
abandon
Returns a message into the queue and makes it available for all subscribers to receive it again. This method is usually used to return a message that could not be processed at the moment to repeat the attempt. Messages that cause unrecoverable errors shall be removed permanently or/and sent to dead letter queue.
publicabandon(message: MessageEnvelope): Promise<void>
- message: MessageEnvelope - message to return.
clear
Clears the component’s state.
publicclear(context: IContext): Promise<void>
- context: IContext - (optional) a context to trace execution through a call chain.
close
Closes the component and frees used resources.
publicclose(context: IContext): Promise<void>
- context: IContext - (optional) a context to trace execution through a call chain.
complete
Permanently removes a message from the queue. This method is usually used to remove the message after successful processing.
publiccomplete(message: MessageEnvelope): Promise<void>
- message: MessageEnvelope - message to remove.
configure
Configures the component by passing its configuration parameters.
publicconfigure(config: ConfigParams): void
- config: ConfigParams - configuration parameters to be set.
endListen
Ends listening for incoming messages. When this method is called, listen unblocks the thread and execution continues.
endListen(context: IContext): void
- context: IContext - (optional) a context to trace execution through a call chain.
isOpen
Checks if the component is opened.
publicisOpen(): boolean
- returns: boolean - True if the component is open and False otherwise.
listen
Listens for incoming messages and blocks the current thread until the queue is closed.
See also IMessageReceiver, receive
publiclisten(context: IContext, receiver: IMessageReceiver): void
- context: IContext - (optional) a context to trace execution through a call chain.
- receiver: IMessageReceiver - receiver used to receive incoming messages.
peek
Peeks a single incoming message from the queue without removing it. If there are no messages available in the queue, it returns null.
publicpeek(context: IContext): Promise<MessageEnvelope>
- context: IContext - a context to trace execution through a call chain.
- returns: Promise<MessageEnvelope> - peeked message or null.
peekBatch
Peeks multiple incoming messages from the queue without removing them. If there are no messages available in the queue, it returns an empty list.
publicpeekBatch(context: IContext, messageCount: number): Promise<MessageEnvelope[]>
- context: IContext - (optional) a context to trace execution through a call chain.
- messageCount: number - maximum number of messages to peek.
- returns: Promise<MessageEnvelope[]> - list with peeked messages.
readMessageCount
Reads the current number of messages in the queue to be delivered.
publicreadMessageCount(): Promise<number>
- returns: number - number of messages in the queue.
receive
Receives an incoming message and removes it from the queue.
publicreceive(context: IContext, waitTimeout: number): Promise<MessageEnvelope>
- context: IContext - (optional) a context to trace execution through a call chain.
- waitTimeout: number - timeout in milliseconds to wait for a message to come.
- returns: Promise<MessageEnvelope> - received message or null.
renewLock
Renews a lock on a message that makes it invisible from other receivers in the queue. This method is usually used to extend the message processing time.
publicrenewLock(message: MessageEnvelope, lockTimeout: number): Promise<void>
- message: MessageEnvelope - message to extend its lock.
- lockTimeout: number - locking timeout in milliseconds.
send
Sends a message into the queue.
publicsend(context: IContext, envelope: MessageEnvelope): Promise<void>
- context: IContext - (optional) a context to trace execution through a call chain.
- envelope: MessageEnvelope - message envelop to be sent.
openWithParams
Opens the component with given connection and credential parameters.
protectedopenWithParams(context: IContext, connections: ConnectionParams[], credentials: CredentialParams): Promise<void>
- context: IContext - (optional) a context to trace execution through a call chain.
- connections: ConnectionParams[] - connection parameters
- credential: CredentialParams - credential parameters
Examples
let queue = new MessageQueue("myqueue");
await queue.send("123", new MessageEnvelop(null, "mymessage", "ABC"));
let message = await queue.receive("123");
if (message != null) {
...
await queue.complete("123", message);
}