use super::*;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(default)]
pub struct RedisClusterQueueConfig {
pub concurrency: u32,
pub prefix: Option<String>,
pub nodes: Vec<String>,
pub request_timeout_ms: u64,
}
impl Default for RedisClusterQueueConfig {
fn default() -> Self {
Self {
concurrency: 5,
prefix: Some("sockudo_queue:".to_string()),
nodes: vec!["redis://127.0.0.1:6379".to_string()],
request_timeout_ms: 5000,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(default)]
pub struct SqsQueueConfig {
pub region: String,
pub queue_url_prefix: Option<String>,
pub visibility_timeout: i32,
pub endpoint_url: Option<String>,
pub max_messages: i32,
pub wait_time_seconds: i32,
pub concurrency: u32,
pub fifo: bool,
pub message_group_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(default)]
pub struct SnsQueueConfig {
pub region: String,
pub topic_arn: String,
pub endpoint_url: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(default)]
pub struct QueueConfig {
pub driver: QueueDriver,
pub redis: RedisQueueConfig,
pub redis_cluster: RedisClusterQueueConfig,
pub nats: NatsAdapterConfig,
pub pulsar: PulsarAdapterConfig,
pub rabbitmq: RabbitMqAdapterConfig,
pub google_pubsub: GooglePubSubAdapterConfig,
pub kafka: KafkaAdapterConfig,
pub iggy: IggyConfig,
pub sqs: SqsQueueConfig,
pub sns: SnsQueueConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(default)]
pub struct RedisQueueConfig {
pub concurrency: u32,
pub prefix: Option<String>,
pub url_override: Option<String>,
pub cluster_mode: bool,
}
impl Default for SqsQueueConfig {
fn default() -> Self {
Self {
region: "us-east-1".to_string(),
queue_url_prefix: None,
visibility_timeout: 30,
endpoint_url: None,
max_messages: 10,
wait_time_seconds: 5,
concurrency: 5,
fifo: false,
message_group_id: Some("default".to_string()),
}
}
}
impl Default for SnsQueueConfig {
fn default() -> Self {
Self {
region: "us-east-1".to_string(),
topic_arn: String::new(),
endpoint_url: None,
}
}
}
impl Default for RedisQueueConfig {
fn default() -> Self {
Self {
concurrency: 5,
prefix: Some("sockudo_queue:".to_string()),
url_override: None,
cluster_mode: false,
}
}
}