pub struct AwsSqsProvider { /* private fields */ }Expand description
AWS SQS queue provider implementation
This provider implements the QueueProvider trait using AWS SQS. It supports:
- Multiple authentication methods via AWS credential chain
- Standard queues for high throughput
- FIFO queues for ordered message processing
- Session emulation via FIFO message groups
- Queue URL caching for performance
- Dead letter queue integration
§Thread Safety
The provider is thread-safe and can be shared across async tasks using Arc.
Internal state (queue URL cache) is protected by RwLock.
Implementations§
Source§impl AwsSqsProvider
impl AwsSqsProvider
Sourcepub async fn new(config: AwsSqsConfig) -> Result<Self, AwsError>
pub async fn new(config: AwsSqsConfig) -> Result<Self, AwsError>
Create new AWS SQS provider
§Arguments
config- AWS SQS configuration with region and authentication details
§Errors
Returns error if:
- Configuration is invalid
- Authentication fails
- AWS SDK initialization fails
§Example
use queue_runtime::providers::AwsSqsProvider;
use queue_runtime::AwsSqsConfig;
let config = AwsSqsConfig {
region: "us-east-1".to_string(),
access_key_id: None,
secret_access_key: None,
use_fifo_queues: false,
};
let provider = AwsSqsProvider::new(config).await?;Trait Implementations§
Source§impl Debug for AwsSqsProvider
impl Debug for AwsSqsProvider
Source§impl QueueProvider for AwsSqsProvider
impl QueueProvider for AwsSqsProvider
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 AwsSqsProvider
impl !RefUnwindSafe for AwsSqsProvider
impl Send for AwsSqsProvider
impl Sync for AwsSqsProvider
impl Unpin for AwsSqsProvider
impl UnsafeUnpin for AwsSqsProvider
impl !UnwindSafe for AwsSqsProvider
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
Mutably borrows from an owned value. Read more