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
public
MemoryMessageQueue(String name)
- 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.
public
void abandon(MessageEnvelope message)
- message: MessageEnvelope - message to return.
clear
Clears the component’s state.
public
void clear(IContext context)
- context: IContext - (optional) a context to trace execution through a call chain.
close
Closes the component and frees used resources.
public
void close(IContext context)
- 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.
public
void complete(MessageEnvelope message)
- message: MessageEnvelope - message to remove.
configure
Configures the component by passing its configuration parameters.
public
void configure(ConfigParams config)
- 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.
void endListen(IContext context)
- context: IContext - (optional) a context to trace execution through a call chain.
isOpen
Checks if the component is opened.
public
boolean isOpen()
- 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
public
void listen(IContext context, IMessageReceiver receiver)
- 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.
public
MessageEnvelopee peek(IContext context)
- 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.
public
List<MessageEnvelope> peekBatch(IContext context, int messageCount)
- 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.
public
int readMessageCount()
- returns: int - number of messages in the queue.
receive
Receives an incoming message and removes it from the queue.
public
MessageEnvelope receive(IContext context, long waitTimeout)
- context: IContext - (optional) a context to trace execution through a call chain.
- waitTimeout: long - timeout in milliseconds to wait for a message to come.
- returns: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.
public
void renewLock(MessageEnvelope message, long lockTimeout)
- message: MessageEnvelope - message to extend its lock.
- lockTimeout: long - locking timeout in milliseconds.
send
Sends a message into the queue.
public
void send(IContext context, MessageEnvelope message)
- 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.
protected
void openWithParams(IContext context, ConnectionParams connection, CredentialParams credential)
- context: IContext - (optional) a context to trace execution through a call chain.
- connections: ConnectionParams[] - connection parameters
- credential: CredentialParams - credential parameters
Examples
{@code
MessageQueue queue = new MessageQueue("myqueue");
queue.send("123", new MessageEnvelope(null, "mymessage", "ABC"));
queue.receive("123", 0);
}
</pre>
@see MessageQueue
@see MessagingCapabilities