Queue
This module provides a client for interacting with server-managed queues. It contains two primary exports:
Overview
Queue
– A simple class that represents a queue instance, holding its name and current size.QueuesClient
– A high-level client that sends requests through a providedRoomClient
to list, open, drain, close, send messages to, and receive messages from queues.
API Methods
Below is an example of how you might use the QueuesClient
in your code:
Queue
A basic representation of a queue, holding a name and its current size.
name: string
The name of the queue.size: number
The size (or length) of the queue at the time of retrieval.
QueuesClient
The QueuesClient
is responsible for sending requests through a RoomClient
to perform various operations on queues.
room: RoomClient
An instance ofRoomClient
, which handles the low-level communication with the server or service.
list()
- Returns
An array ofQueue
objects containing the name and size of each queue found on the server.
open(name)
- Parameters:
name
– The name of the queue to open.
- Description
Sends a request to the server to open a queue with the specified name. If the queue already exists and is closed, it will be reopened. If it does not exist, it will be created and opened.
drain(name)
- Parameters:
name
– The name of the queue to drain.
- Description
Removes all messages from the specified queue, effectively resetting its size to zero.
close(name)
- Parameters:
name
– The name of the queue to close.
- Description
Closes the specified queue so that no further messages can be sent or received until it is reopened.
send(name, message, create)
- Parameters:
name
– The name of the queue to send a message to.message
– A JSON-serializable object containing the data you want to send.create
– (Optional) Whether to create the queue if it does not exist. Defaults totrue
.
- Description
Sends a message to the specified queue. Ifcreate
is true, the queue will be created automatically if it doesn’t exist.
receive(name, create, wait)
-
Parameters:
name
– The name of the queue to receive a message from.create
– (Optional) Whether to create the queue if it does not exist. Defaults totrue
.wait
– (Optional) Whether to wait (block) until a message is available. Defaults totrue
. Behavior may vary based on server-side configuration.
-
Returns
A JSON-serializable object if a message is received, ornull
if the queue was empty (represented by anEmptyResponse
). -
Description
Tries to receive one message from the specified queue. If the response from the server isEmptyResponse
, the method returnsnull
. Otherwise, it returns the JSON object from theJsonResponse
.
Additional Notes
-
Error Handling
When a request fails or the server returns an error response, the underlyingRoomClient
may throw errors. Make sure to wrap calls intry/catch
if you need to handle them gracefully. -
Concurrency and Performance
- For high-throughput scenarios, ensure that your server and
RoomClient
configuration is optimized for concurrency. - The
receive
method’swait
parameter may affect your application’s design. Ifwait
istrue
, the call might block until a message is available (depending on the server’s capabilities).
- For high-throughput scenarios, ensure that your server and
-
Extensibility
You can add additional queue-related functionality (e.g., message peek, dead-letter queues, etc.) by extendingQueuesClient
or creating related classes that also useRoomClient
.
Was this page helpful?