sqs_lambda/
local_sqs_service_options.rs1use std::time::Duration;
2
3use crate::sqs_completion_handler::CompletionPolicy;
4use crate::sqs_consumer::ConsumePolicy;
5use chrono::Utc;
6
7#[derive(Default)]
8pub struct LocalSqsServiceOptionsBuilder {
9 completion_policy: Option<CompletionPolicy>,
10 consume_policy: Option<ConsumePolicy>,
11}
12impl LocalSqsServiceOptionsBuilder {
13 pub fn with_completion_policy(&mut self, arg: CompletionPolicy) -> &Self {
14 self.completion_policy = Some(arg);
15 self
16 }
17
18 pub fn with_minimal_buffer_completion_policy(&mut self) -> &Self {
19 self.with_completion_policy(CompletionPolicy::new(
20 1, Duration::from_secs(1), ))
23 }
24
25 pub fn with_consume_policy(&mut self, arg: ConsumePolicy) -> &Self {
26 self.consume_policy = Some(arg);
27 self
28 }
29
30
31 pub fn build(self) -> LocalSqsServiceOptions {
32 LocalSqsServiceOptions {
33 completion_policy: self.completion_policy.unwrap_or_else(|| {
34 CompletionPolicy::new(
35 10,
36 Duration::from_secs(3),
37 )
38 }),
39 consume_policy: self.consume_policy.unwrap_or_else(|| {
40 ConsumePolicy::new(
41 Utc::now().timestamp_millis() + 10_000,
42 Duration::from_secs(5),
43 300,
44 )
45 }),
46 }
47 }
48}
49
50pub struct LocalSqsServiceOptions {
51 pub completion_policy: CompletionPolicy,
52 pub consume_policy: ConsumePolicy,
53}