Module oracle::aq

source ·
Expand description

Oracle Advanced Queuing (available when aq_unstable feature is enabled.)

Warning: Any type in this module is unstable. It may be changed incompatibly by minor version upgrades.

Examples

Object type queue


// Create a queue
let objtype = conn.object_type("UDT_BOOK")?;
let mut queue = aq::Queue::<Object>::new(&conn, "BOOK_QUEUE", &objtype)?;

// Create a message
let mut payload = objtype.new_object()?;
payload.set("TITLE", &"Pebble in the Sky")?;
payload.set("AUTHORS", &"Isaac Asimov")?;
payload.set("PRICE", &17.0)?;
let mut msg = aq::MsgProps::<Object>::new(&conn)?;
msg.set_payload(&payload);

// Enqueue the message to the queue
queue.enqueue(&msg)?;

// Dequeue a message from the queue
let new_msg = queue.dequeue()?;
let new_payload = new_msg.payload()?;

// Compare message payloads.
assert_eq!(payload.get::<String>("TITLE")?, new_payload.get::<String>("TITLE")?);
assert_eq!(payload.get::<String>("AUTHORS")?, new_payload.get::<String>("AUTHORS")?);
assert_eq!(payload.get::<f32>("PRICE")?, new_payload.get::<f32>("PRICE")?);

RAW data queue


// Create a queue
let mut queue = aq::Queue::<[u8]>::new(&conn, "RAW_QUEUE", &())?;

// Create a message
let payload = b"\xde\xad\xbe\xef";
let mut msg = aq::MsgProps::<[u8]>::new(&conn)?;
msg.set_payload(payload.as_ref());

// Enqueue the message to the queue
queue.enqueue(&msg)?;

// Dequeue a message from the queue
let new_msg = queue.dequeue()?;
let new_payload = new_msg.payload()?; // returns Vec<u8>

// Compare message payloads.
assert_eq!(payload, new_payload.as_slice());

Enqueue and dequeue more than one message in one call


// Create a queue
let mut queue = aq::Queue::<[u8]>::new(&conn, "RAW_QUEUE", &())?;

// Create messages
let payloads = [b"\xde\xad\xbe\xef", b"\xba\xce\xba\x11"];
let mut messages = vec![];
for payload in &payloads {
    let mut msg = aq::MsgProps::<[u8]>::new(&conn)?;
    msg.set_payload(payload.as_ref())?;
    messages.push(msg);
}

// Enqueue the messages
queue.enqueue_many(&messages)?;

// Dequeue messages from the queue
let new_messages = queue.dequeue_many(10)?;

// Compare message payloads.
assert_eq!(new_messages.len(), 2);
assert_eq!(new_messages[0].payload()?, payloads[0]);
assert_eq!(new_messages[1].payload()?, payloads[1]);

Structs

Options when dequeuing messages using advanced queueing
Options when enqueuing messages using advanced queueing
Properties of messages that are enqueued and dequeued using advanced queuing
Advanced Queueing (AQ) queue which may be used to enqueue and dequeue messages

Enums

Modes that are possible when dequeuing messages from a queue
method used for determining which message is to be dequeued from a queue
Delivery mode used for filtering messages when dequeuing messages from a queue
Possible states for messages in a queue
visibility of messages in advanced queuing

Traits

A trait for payload type