rocketmq_protocol/protocol/header/
notify_consumer_ids_changed_request_header.rs1use cheetah_string::CheetahString;
16use rocketmq_macros::RequestHeaderCodec;
17use serde::Deserialize;
18use serde::Serialize;
19
20use crate::rpc::rpc_request_header::RpcRequestHeader;
21
22#[derive(Serialize, Deserialize, Debug, RequestHeaderCodec)]
23#[header(
24 type_id = "rocketmq_protocol::protocol::header::notify_consumer_ids_changed_request_header::NotifyConsumerIdsChangedRequestHeader",
25 java_class = "org.apache.rocketmq.remoting.protocol.header.NotifyConsumerIdsChangedRequestHeader"
26)]
27#[serde(rename_all = "camelCase")]
28pub struct NotifyConsumerIdsChangedRequestHeader {
29 #[header(required)]
30 pub consumer_group: CheetahString,
31
32 #[serde(flatten)]
33 #[header(flatten, presence = "always")]
34 pub rpc_request_header: Option<RpcRequestHeader>,
35}
36
37#[cfg(test)]
38mod tests {
39 use super::*;
40
41 #[test]
42 fn notify_consumer_ids_changed_request_header_serialization() {
43 let header = NotifyConsumerIdsChangedRequestHeader {
44 consumer_group: CheetahString::from("group1"),
45 rpc_request_header: None,
46 };
47 let json = serde_json::to_string(&header).unwrap();
48 assert!(json.contains("\"consumerGroup\":\"group1\""));
49 }
50
51 #[test]
52 fn notify_consumer_ids_changed_request_header_deserialization() {
53 let json = r#"{"consumerGroup":"group1"}"#;
54 let header: NotifyConsumerIdsChangedRequestHeader = serde_json::from_str(json).unwrap();
55 assert_eq!(header.consumer_group, "group1");
56 }
57}