Available on crate feature
aq_unstable
only.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§
- DeqOptions
- Options when dequeuing messages using advanced queueing
- EnqOptions
- Options when enqueuing messages using advanced queueing
- MsgProps
- Properties of messages that are enqueued and dequeued using advanced queuing
- Queue
- Advanced Queueing (AQ) queue which may be used to enqueue and dequeue messages
Enums§
- DeqMode
- Modes that are possible when dequeuing messages from a queue
- DeqNavigation
- method used for determining which message is to be dequeued from a queue
- Message
Delivery Mode - Delivery mode used for filtering messages when dequeuing messages from a queue
- Message
State - Possible states for messages in a queue
- Visibility
- visibility of messages in advanced queuing
Traits§
- Payload
- A trait for payload type