pub struct NatsQueue { /* private fields */ }Expand description
A queue implementation using NATS JetStream
Implementations§
Source§impl NatsQueue
impl NatsQueue
Sourcepub fn new(
stream_name: String,
nats_server: String,
dequeue_timeout: Duration,
) -> Self
pub fn new( stream_name: String, nats_server: String, dequeue_timeout: Duration, ) -> Self
Create a new NatsQueue with the default “worker-group” consumer
Sourcepub fn new_without_consumer(
stream_name: String,
nats_server: String,
dequeue_timeout: Duration,
) -> Self
pub fn new_without_consumer( stream_name: String, nats_server: String, dequeue_timeout: Duration, ) -> Self
Create a new NatsQueue without a consumer (publisher-only mode)
Sourcepub fn new_with_consumer(
stream_name: String,
nats_server: String,
dequeue_timeout: Duration,
consumer_name: String,
) -> Self
pub fn new_with_consumer( stream_name: String, nats_server: String, dequeue_timeout: Duration, consumer_name: String, ) -> Self
Create a new NatsQueue with a specific consumer name for broadcast pattern Each consumer with a unique name will receive all messages independently
Sourcepub async fn connect(&mut self) -> Result<()>
pub async fn connect(&mut self) -> Result<()>
Connect to the NATS server and set up the stream and consumer
Sourcepub async fn connect_with_reset(&mut self, reset_stream: bool) -> Result<()>
pub async fn connect_with_reset(&mut self, reset_stream: bool) -> Result<()>
Connect to the NATS server and set up the stream and consumer, optionally resetting the stream
Sourcepub async fn ensure_connection(&mut self) -> Result<()>
pub async fn ensure_connection(&mut self) -> Result<()>
Ensure we have an active connection
Sourcepub async fn shutdown(&mut self, consumer_name: Option<String>) -> Result<()>
pub async fn shutdown(&mut self, consumer_name: Option<String>) -> Result<()>
Shutdown the consumer by deleting it from the stream and closing the connection This permanently removes the consumer from the server
If consumer_name is provided, that specific consumer will be deleted instead of the
current consumer. This allows deletion of other consumers on the same stream.
Sourcepub async fn count_consumers(&mut self) -> Result<usize>
pub async fn count_consumers(&mut self) -> Result<usize>
Count the number of consumers for the stream
Sourcepub async fn list_consumers(&mut self) -> Result<Vec<String>>
pub async fn list_consumers(&mut self) -> Result<Vec<String>>
List all consumer names for the stream
Sourcepub async fn enqueue_task(&mut self, task_data: Bytes) -> Result<()>
pub async fn enqueue_task(&mut self, task_data: Bytes) -> Result<()>
Enqueue a task using the provided data
Sourcepub async fn dequeue_task(
&mut self,
timeout: Option<Duration>,
) -> Result<Option<Bytes>>
pub async fn dequeue_task( &mut self, timeout: Option<Duration>, ) -> Result<Option<Bytes>>
Dequeue and return a task as raw bytes
Sourcepub async fn get_queue_size(&mut self) -> Result<u64>
pub async fn get_queue_size(&mut self) -> Result<u64>
Get the number of messages currently in the queue
Sourcepub async fn get_stream_messages(&mut self) -> Result<u64>
pub async fn get_stream_messages(&mut self) -> Result<u64>
Get the total number of messages currently in the stream
Sourcepub async fn purge_up_to_sequence(&self, sequence: u64) -> Result<()>
pub async fn purge_up_to_sequence(&self, sequence: u64) -> Result<()>
Purge messages from the stream up to (but not including) the specified sequence number This permanently removes messages and affects all consumers of the stream
Sourcepub async fn purge_acknowledged(&mut self) -> Result<()>
pub async fn purge_acknowledged(&mut self) -> Result<()>
Purge messages from the stream up to the minimum acknowledged sequence across all consumers This finds the lowest acknowledged sequence number across all consumers and purges up to that point
Trait Implementations§
Source§impl EventPublisher for NatsQueue
impl EventPublisher for NatsQueue
Source§fn subject(&self) -> String
fn subject(&self) -> String
Source§fn publish<'life0, 'life1, 'async_trait>(
&'life0 self,
event_name: impl 'async_trait + AsRef<str> + Send + Sync,
event: &'life1 (impl 'async_trait + Serialize + Send + Sync),
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn publish<'life0, 'life1, 'async_trait>(
&'life0 self,
event_name: impl 'async_trait + AsRef<str> + Send + Sync,
event: &'life1 (impl 'async_trait + Serialize + Send + Sync),
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
event_name will be . concatenated with the
base subject provided by the implementation.Source§fn publish_bytes<'life0, 'async_trait>(
&'life0 self,
event_name: impl 'async_trait + AsRef<str> + Send + Sync,
bytes: Vec<u8>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn publish_bytes<'life0, 'async_trait>(
&'life0 self,
event_name: impl 'async_trait + AsRef<str> + Send + Sync,
bytes: Vec<u8>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
event_name will be . concatenated with the
base subject provided by the implementation.Auto Trait Implementations§
impl Freeze for NatsQueue
impl !RefUnwindSafe for NatsQueue
impl Send for NatsQueue
impl Sync for NatsQueue
impl Unpin for NatsQueue
impl !UnwindSafe for NatsQueue
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);