pub struct NatsProvider { /* private fields */ }Expand description
NATS queue provider using JetStream for persistent, at-least-once delivery.
Each queue maps to a JetStream stream created on demand. Messages are published to per-queue subjects and consumed via pull consumers.
Implementations§
Source§impl NatsProvider
impl NatsProvider
Sourcepub async fn new(config: NatsConfig) -> Result<Self, NatsError>
pub async fn new(config: NatsConfig) -> Result<Self, NatsError>
Create a new NatsProvider and connect to the NATS server.
§Errors
Returns NatsError if the connection cannot be established or the
credentials file cannot be read.
§Examples
use queue_runtime::providers::NatsProvider;
use queue_runtime::NatsConfig;
let config = NatsConfig::default();
let provider = NatsProvider::new(config).await.unwrap();Trait Implementations§
Source§impl QueueProvider for NatsProvider
impl QueueProvider for NatsProvider
Source§fn send_message<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
queue: &'life1 QueueName,
message: &'life2 Message,
) -> Pin<Box<dyn Future<Output = Result<MessageId, QueueError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn send_message<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
queue: &'life1 QueueName,
message: &'life2 Message,
) -> Pin<Box<dyn Future<Output = Result<MessageId, QueueError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Send single message
Source§fn send_messages<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
queue: &'life1 QueueName,
messages: &'life2 [Message],
) -> Pin<Box<dyn Future<Output = Result<Vec<MessageId>, QueueError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn send_messages<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
queue: &'life1 QueueName,
messages: &'life2 [Message],
) -> Pin<Box<dyn Future<Output = Result<Vec<MessageId>, QueueError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Send multiple messages
Source§fn receive_message<'life0, 'life1, 'async_trait>(
&'life0 self,
queue: &'life1 QueueName,
timeout: Duration,
) -> Pin<Box<dyn Future<Output = Result<Option<ReceivedMessage>, QueueError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn receive_message<'life0, 'life1, 'async_trait>(
&'life0 self,
queue: &'life1 QueueName,
timeout: Duration,
) -> Pin<Box<dyn Future<Output = Result<Option<ReceivedMessage>, QueueError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Receive single message
Source§fn receive_messages<'life0, 'life1, 'async_trait>(
&'life0 self,
queue: &'life1 QueueName,
max_messages: u32,
timeout: Duration,
) -> Pin<Box<dyn Future<Output = Result<Vec<ReceivedMessage>, QueueError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn receive_messages<'life0, 'life1, 'async_trait>(
&'life0 self,
queue: &'life1 QueueName,
max_messages: u32,
timeout: Duration,
) -> Pin<Box<dyn Future<Output = Result<Vec<ReceivedMessage>, QueueError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Receive multiple messages
Source§fn complete_message<'life0, 'life1, 'async_trait>(
&'life0 self,
receipt: &'life1 ReceiptHandle,
) -> Pin<Box<dyn Future<Output = Result<(), QueueError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn complete_message<'life0, 'life1, 'async_trait>(
&'life0 self,
receipt: &'life1 ReceiptHandle,
) -> Pin<Box<dyn Future<Output = Result<(), QueueError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Complete message processing
Source§fn abandon_message<'life0, 'life1, 'async_trait>(
&'life0 self,
receipt: &'life1 ReceiptHandle,
) -> Pin<Box<dyn Future<Output = Result<(), QueueError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn abandon_message<'life0, 'life1, 'async_trait>(
&'life0 self,
receipt: &'life1 ReceiptHandle,
) -> Pin<Box<dyn Future<Output = Result<(), QueueError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Abandon message for retry
Source§fn dead_letter_message<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
receipt: &'life1 ReceiptHandle,
reason: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), QueueError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn dead_letter_message<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
receipt: &'life1 ReceiptHandle,
reason: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), QueueError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Send to dead letter queue
Source§fn create_session_client<'life0, 'life1, 'async_trait>(
&'life0 self,
queue: &'life1 QueueName,
session_id: Option<SessionId>,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn SessionProvider>, QueueError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_session_client<'life0, 'life1, 'async_trait>(
&'life0 self,
queue: &'life1 QueueName,
session_id: Option<SessionId>,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn SessionProvider>, QueueError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Create session client
Source§fn provider_type(&self) -> ProviderType
fn provider_type(&self) -> ProviderType
Get provider type
Source§fn supports_sessions(&self) -> SessionSupport
fn supports_sessions(&self) -> SessionSupport
Get session support level
Source§fn supports_batching(&self) -> bool
fn supports_batching(&self) -> bool
Check batch operation support
Source§fn max_batch_size(&self) -> u32
fn max_batch_size(&self) -> u32
Get maximum batch size
Auto Trait Implementations§
impl Freeze for NatsProvider
impl !RefUnwindSafe for NatsProvider
impl Send for NatsProvider
impl Sync for NatsProvider
impl Unpin for NatsProvider
impl UnsafeUnpin for NatsProvider
impl !UnwindSafe for NatsProvider
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Mutably borrows from an owned value. Read more