rocketmq_protocol/protocol/body/
process_queue_info.rs1use serde::Deserialize;
16use serde::Serialize;
17
18#[derive(Debug, Clone, Copy, Default, Serialize, Deserialize)]
19#[serde(rename_all = "camelCase")]
20pub struct ProcessQueueInfo {
21 pub commit_offset: i64,
22 pub cached_msg_min_offset: u64,
23 pub cached_msg_max_offset: u64,
24 pub cached_msg_count: u32,
25 pub cached_msg_size_in_mib: u32,
26
27 pub transaction_msg_min_offset: u64,
28 pub transaction_msg_max_offset: u64,
29 pub transaction_msg_count: u32,
30
31 pub locked: bool,
32 pub try_unlock_times: u64,
33 pub last_lock_timestamp: u64,
34
35 pub droped: bool,
36 pub last_pull_timestamp: u64,
37 pub last_consume_timestamp: u64,
38}
39
40impl std::fmt::Display for ProcessQueueInfo {
41 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
42 write!(
43 f,
44 "ProcessQueueInfo [commit_offset: {}, cached_msg_min_offset: {}, cached_msg_max_offset: {}, \
45 cached_msg_count: {}, cached_msg_size_in_mib: {}, transaction_msg_min_offset: {}, \
46 transaction_msg_max_offset: {}, transaction_msg_count: {}, locked: {}, try_unlock_times: {}, \
47 last_lock_timestamp: {}, droped: {}, last_pull_timestamp: {}, last_consume_timestamp: {}]",
48 self.commit_offset,
49 self.cached_msg_min_offset,
50 self.cached_msg_max_offset,
51 self.cached_msg_count,
52 self.cached_msg_size_in_mib,
53 self.transaction_msg_min_offset,
54 self.transaction_msg_max_offset,
55 self.transaction_msg_count,
56 self.locked,
57 self.try_unlock_times,
58 self.last_lock_timestamp,
59 self.droped,
60 self.last_pull_timestamp,
61 self.last_consume_timestamp
62 )
63 }
64}
65
66#[cfg(test)]
67mod tests {
68 use super::*;
69
70 #[test]
71 fn process_queue_display() {
72 let process_queue_info = ProcessQueueInfo {
73 commit_offset: 100,
74 cached_msg_min_offset: 90,
75 cached_msg_max_offset: 110,
76 cached_msg_count: 20,
77 cached_msg_size_in_mib: 5,
78 transaction_msg_min_offset: 80,
79 transaction_msg_max_offset: 120,
80 transaction_msg_count: 40,
81 locked: true,
82 try_unlock_times: 3,
83 last_lock_timestamp: 1620000000,
84 droped: false,
85 last_pull_timestamp: 1620000100,
86 last_consume_timestamp: 1620000200,
87 };
88
89 let display_output = format!("{}", process_queue_info);
90 assert!(display_output.contains("ProcessQueueInfo"));
91 assert!(display_output.contains("commit_offset: 100"));
92 assert!(display_output.contains("cached_msg_min_offset: 90"));
93 assert!(display_output.contains("cached_msg_max_offset: 110"));
94 assert!(display_output.contains("cached_msg_count: 20"));
95 assert!(display_output.contains("cached_msg_size_in_mib: 5"));
96 assert!(display_output.contains("transaction_msg_min_offset: 80"));
97 assert!(display_output.contains("transaction_msg_max_offset: 120"));
98 assert!(display_output.contains("transaction_msg_count: 40"));
99 assert!(display_output.contains("locked: true"));
100 assert!(display_output.contains("try_unlock_times: 3"));
101 assert!(display_output.contains("last_lock_timestamp: 1620000000"));
102 assert!(display_output.contains("droped: false"));
103 assert!(display_output.contains("last_pull_timestamp: 1620000100"));
104 assert!(display_output.contains("last_consume_timestamp: 1620000200"));
105 }
106}