View Source Queue Admin Client
Queue Admin Client provides comprehensive administrative capabilities for managing queues in your OCI environment. It handles queue lifecycle operations including creation, configuration, deletion, and maintenance of queues. The client supports both synchronous operations (like retrieving queue details) and asynchronous operations (like queue creation) through work requests.
Create Queue Admin Client
First, create a new QueueAdminClient instance:
# Create a base client with your OCI configuration
config = ExOciSdk.Config.from_file!("path/to/config")
client = ExOciSdk.Client.create!(config)
# Initialize the QueueAdminClient
queue_admin_client = ExOciSdk.Queue.QueueAdminClient.create(client)
see more details in ExOciSdk.Queue.QueueAdminClient.create/2
Core Features
- Queue lifecycle management (create, update, delete)
- Queue configuration and settings management
- Work request tracking for asynchronous operations
- Queue compartment management
- Queue statistics and monitoring
Queue Management Operations
Creating Queues
Create a new queue with specified configuration:
create_queue_input = %{
"display_name" => "my-queue",
"compartment_id" => "ocid1.compartment.oc1.xxx",
"retention_in_seconds" => 3600,
"visibility_in_seconds" => 30
}
{:ok, response} = ExOciSdk.Queue.QueueAdminClient.create_queue(queue_admin_client, create_queue_input)
see more details in ExOciSdk.Queue.QueueAdminClient.create_queue/3
Retrieving Queue Details
Get details about a specific queue:
queue_id = "ocid1.queue.oc1.xxx"
{:ok, response} = ExOciSdk.Queue.QueueAdminClient.get_queue(queue_admin_client, queue_id)
see more details in ExOciSdk.Queue.QueueAdminClient.get_queue/3
Listing Queues
List queues with optional filtering:
{:ok, response} = ExOciSdk.Queue.QueueAdminClient.list_queues(queue_admin_client,
compartment_id: "ocid1.compartment.oc1.xxx",
display_name: "my-queue",
limit: 10,
page: 1
)
see more details in ExOciSdk.Queue.QueueAdminClient.list_queues/2
Updating Queues
Update queue configuration:
update_input = %{
"display_name" => "updated-queue-name",
"visibility_in_seconds" => 60,
"timeout_in_seconds" => 30,
"dead_letter_queue_delivery_count" => 5,
"freeform_tags" => %{
"department" => "engineering",
"environment" => "production"
}
}
queue_id = "ocid1.queue.oc1.xxx"
{:ok, response} = ExOciSdk.Queue.QueueAdminClient.update_queue(queue_admin_client, queue_id, update_input)
see more details in ExOciSdk.Queue.QueueAdminClient.update_queue/4
Deleting Queues
Delete a queue:
queue_id = "ocid1.queue.oc1.xxx"
{:ok, response} = ExOciSdk.Queue.QueueAdminClient.delete_queue(queue_admin_client, queue_id)
see more details in ExOciSdk.Queue.QueueAdminClient.delete_queue/3
Purging Queue Messages
Purge messages from a queue:
purge_input = %{
"purge_type" => "NORMAL",
"channel_ids" => ["channel-1", "channel-2"]
}
queue_id = "ocid1.queue.oc1.xxx"
{:ok, response} = ExOciSdk.Queue.QueueAdminClient.purge_queue(queue_admin_client, queue_id, purge_input)
see more details in ExOciSdk.Queue.QueueAdminClient.purge_queue/4
Moving Queues Between Compartments
Change queue compartment:
compartment_input = %{
"compartment_id" => "ocid1.compartment.oc1.xxx.new_compartment"
}
queue_id = "ocid1.queue.oc1.xxx"
{:ok, response} = ExOciSdk.Queue.QueueAdminClient.change_queue_compartment(queue_admin_client, queue_id, compartment_input)
see more details in ExOciSdk.Queue.QueueAdminClient.change_queue_compartment/4
Work Request Operations
The following queue operations are asynchronous and return work request IDs:
create_queue/3
: Creating new queuesdelete_queue/3
: Deleting existing queuespurge_queue/4
: Purging messages from queuesupdate_queue/4
: Updating queue configurationschange_queue_compartment/4
: Moving queues between compartments
These work request operations help track the status of asynchronous operations:
Get Work Request Status
Check the status of an asynchronous operation:
work_request_id = "ocid1.queueworkrequest.oc1.xxx"
{:ok, response} = ExOciSdk.Queue.QueueAdminClient.get_work_request(queue_admin_client, work_request_id)
see more details in ExOciSdk.Queue.QueueAdminClient.get_work_request/3
List Work Requests
List all work requests in a compartment:
{:ok, response} = ExOciSdk.Queue.QueueAdminClient.list_work_requests(queue_admin_client,
compartment_id: "ocid1.compartment.oc1.xxx",
limit: 10,
page: 1
)
see more details in ExOciSdk.Queue.QueueAdminClient.list_work_requests/2
List Work Request Errors
View errors for a specific work request:
work_request_id = "ocid1.queueworkrequest.oc1.xxx"
{:ok, response} = ExOciSdk.Queue.QueueAdminClient.list_work_request_errors(queue_admin_client, work_request_id)
see more details in ExOciSdk.Queue.QueueAdminClient.list_work_request_errors/3
List Work Request Logs
Access detailed operation logs:
work_request_id = "ocid1.queueworkrequest.oc1.xxx"
{:ok, response} = ExOciSdk.Queue.QueueAdminClient.list_work_request_logs(queue_admin_client, work_request_id)
see more details in ExOciSdk.Queue.QueueAdminClient.list_work_request_logs/3
Configuration Options
Client Creation Options
When creating a QueueAdminClient, you can specify:
service_endpoint
: Custom service endpoint URL (optional)
Operation Options
Most operations accept these common options:
opc_request_id
: Custom request identifier for tracing and debuggingif_match
: For optimistic concurrency control- Additional operation-specific options as documented in each function
Response Format
All operations return a tuple in the format:
{:ok, response}
on success{:error, reason}
on failure
The response contains:
data
: The operation's result datametadata
: Additional information including:opc_request_id
: Request identifieropc_work_request_id
: For asynchronous operationsopc_next_page
: For paginated results
Error Handling
The client handles various error scenarios and returns appropriate error tuples. Always check the return value and handle both success and error cases in your code.