Skip to main content

sockudo_core/options/
queue.rs

1use super::*;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5#[serde(default)]
6pub struct RedisClusterQueueConfig {
7    pub concurrency: u32,
8    pub prefix: Option<String>,
9    pub nodes: Vec<String>,
10    pub request_timeout_ms: u64,
11}
12
13impl Default for RedisClusterQueueConfig {
14    fn default() -> Self {
15        Self {
16            concurrency: 5,
17            prefix: Some("sockudo_queue:".to_string()),
18            nodes: vec!["redis://127.0.0.1:6379".to_string()],
19            request_timeout_ms: 5000,
20        }
21    }
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
25#[serde(default)]
26pub struct SqsQueueConfig {
27    pub region: String,
28    pub queue_url_prefix: Option<String>,
29    pub visibility_timeout: i32,
30    pub endpoint_url: Option<String>,
31    pub max_messages: i32,
32    pub wait_time_seconds: i32,
33    pub concurrency: u32,
34    pub fifo: bool,
35    pub message_group_id: Option<String>,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
39#[serde(default)]
40pub struct SnsQueueConfig {
41    pub region: String,
42    pub topic_arn: String,
43    pub endpoint_url: Option<String>,
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize, Default)]
47#[serde(default)]
48pub struct QueueConfig {
49    pub driver: QueueDriver,
50    pub redis: RedisQueueConfig,
51    pub redis_cluster: RedisClusterQueueConfig,
52    pub nats: NatsAdapterConfig,
53    pub pulsar: PulsarAdapterConfig,
54    pub rabbitmq: RabbitMqAdapterConfig,
55    pub google_pubsub: GooglePubSubAdapterConfig,
56    pub kafka: KafkaAdapterConfig,
57    pub iggy: IggyConfig,
58    pub sqs: SqsQueueConfig,
59    pub sns: SnsQueueConfig,
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize)]
63#[serde(default)]
64pub struct RedisQueueConfig {
65    pub concurrency: u32,
66    pub prefix: Option<String>,
67    pub url_override: Option<String>,
68    pub cluster_mode: bool,
69}
70
71impl Default for SqsQueueConfig {
72    fn default() -> Self {
73        Self {
74            region: "us-east-1".to_string(),
75            queue_url_prefix: None,
76            visibility_timeout: 30,
77            endpoint_url: None,
78            max_messages: 10,
79            wait_time_seconds: 5,
80            concurrency: 5,
81            fifo: false,
82            message_group_id: Some("default".to_string()),
83        }
84    }
85}
86
87impl Default for SnsQueueConfig {
88    fn default() -> Self {
89        Self {
90            region: "us-east-1".to_string(),
91            topic_arn: String::new(),
92            endpoint_url: None,
93        }
94    }
95}
96
97impl Default for RedisQueueConfig {
98    fn default() -> Self {
99        Self {
100            concurrency: 5,
101            prefix: Some("sockudo_queue:".to_string()),
102            url_override: None,
103            cluster_mode: false,
104        }
105    }
106}