use rocketmq_common::common::message::message_single::Message;
fn main() {
println!("=== Example 1: Simple Message ===");
let msg = Message::builder()
.topic("simple-topic")
.body_slice(b"Hello, RocketMQ!")
.build_unchecked();
println!("Topic: {}", msg.topic());
println!("Body: {:?}", std::str::from_utf8(msg.body_slice()).unwrap());
println!();
println!("=== Example 2: Message with Tags ===");
let msg = Message::builder()
.topic("tagged-topic")
.body_slice(b"Tagged message")
.tags("important")
.build_unchecked();
println!("Topic: {}", msg.topic());
println!("Tags: {:?}", msg.tags());
println!("Body: {:?}", std::str::from_utf8(msg.body_slice()).unwrap());
println!();
println!("=== Example 3: Message with Keys ===");
let msg = Message::builder()
.topic("order-topic")
.body_slice(b"Order data")
.tags("order")
.keys(vec!["order-123".to_string(), "user-456".to_string()])
.build_unchecked();
println!("Topic: {}", msg.topic());
println!("Tags: {:?}", msg.tags());
println!("Keys: {:?}", msg.keys());
println!();
println!("=== Example 4: Delayed Message ===");
let msg = Message::builder()
.topic("delayed-topic")
.body_slice(b"Delayed message")
.delay_level(3) .build_unchecked();
println!("Topic: {}", msg.topic());
println!("Delay Level: {}", msg.delay_level());
println!();
println!("=== Example 5: Message with Properties ===");
let msg = Message::builder()
.topic("user-topic")
.body_slice(b"User event")
.tags("user-event")
.key("user-789")
.buyer_id("buyer-001")
.instance_id("instance-1")
.correlation_id("corr-123")
.build_unchecked();
println!("Topic: {}", msg.topic());
println!("Buyer ID: {:?}", msg.buyer_id());
println!("Instance ID: {:?}", msg.instance_id());
println!();
println!("=== Example 6: Transaction Message ===");
let msg = Message::builder()
.topic("transaction-topic")
.body_slice(b"Transaction data")
.transaction_id("tx-abc-123")
.build_unchecked();
println!("Topic: {}", msg.topic());
println!("Transaction ID: {:?}", msg.transaction_id());
println!();
println!("=== Example 7: Message with Delay in MS ===");
let msg = Message::builder()
.topic("scheduled-topic")
.body_slice(b"Scheduled message")
.delay_millis(5000) .build_unchecked();
println!("Topic: {}", msg.topic());
println!();
println!("=== Example 8: Complete Message ===");
let msg = Message::builder()
.topic("complete-topic")
.body_slice(b"Complete message with all options")
.tags("complete")
.keys(vec!["key1".to_string(), "key2".to_string()])
.delay_level(2)
.buyer_id("buyer-002")
.instance_id("instance-2")
.correlation_id("corr-456")
.sharding_key("shard-1")
.trace_switch(true)
.wait_store_msg_ok(true)
.build_unchecked();
println!("Topic: {}", msg.topic());
println!("Tags: {:?}", msg.tags());
println!("Keys: {:?}", msg.keys());
println!("Delay Level: {}", msg.delay_level());
println!("Wait Store: {}", msg.wait_store_msg_ok());
println!();
println!("=== Example 9: Builder Validation ===");
let result = Message::builder().body_slice(b"Missing topic").build();
match result {
Ok(msg) => println!("Message created: {}", msg.topic()),
Err(e) => println!("Validation error: {:?}", e),
}
println!();
println!("=== Example 10: Using Bytes ===");
let body_data = bytes::Bytes::from_static(b"Bytes body");
let msg = Message::builder()
.topic("bytes-topic")
.body(body_data)
.build_unchecked();
println!("Topic: {}", msg.topic());
println!("Body length: {}", msg.body_slice().len());
println!();
println!("All examples completed successfully!");
}