sockudo_core/options/
queue.rs1use 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}