| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package utils
- import (
- "fmt"
- "log"
- "os"
- "os/signal"
- "syscall"
- "testing"
- "time"
- "github.com/apache/rocketmq-client-go/v2/primitive"
- )
- func aaaaa(t *testing.T) {
- // 配置RocketMQ NameServer地址
- nameServer := []string{"172.16.1.150:9876"} // 替换为实际地址
- groupName := "test-producer-group"
- // 创建生产者
- producer, err := NewRocketMQProducer(nameServer, groupName)
- if err != nil {
- log.Fatalf("创建生产者失败: %v", err)
- }
- // 启动生产者
- if err := producer.Start(); err != nil {
- log.Fatalf("启动生产者失败: %v", err)
- }
- defer producer.Shutdown()
- // 示例1:同步发送消息
- fmt.Println("=== 同步发送消息 ===")
- result, err := producer.SendSyncMessage("TestTopic", "Hello RocketMQ!", "TestTag")
- if err != nil {
- log.Printf("同步发送失败: %v", err)
- } else {
- fmt.Printf("同步发送成功: %+v\n", result)
- }
- // 示例2:异步发送消息
- fmt.Println("\n=== 异步发送消息 ===")
- err = producer.SendAsyncMessage("TestTopic", "Hello Async RocketMQ!", func(result *primitive.SendResult, err error) {
- if err != nil {
- fmt.Printf("异步发送失败: %v\n", err)
- } else {
- fmt.Printf("异步发送成功: %+v\n", result)
- }
- }, "AsyncTag")
-
- if err != nil {
- log.Printf("启动异步发送失败: %v", err)
- }
- // 示例3:发送延迟消息(延迟10秒)
- fmt.Println("\n=== 发送延迟消息 ===")
- result, err = producer.SendDelayMessage("DelayTopic", "This is a delayed message", 3, "DelayTag")
- if err != nil {
- log.Printf("发送延迟消息失败: %v", err)
- } else {
- fmt.Printf("延迟消息发送成功: %+v\n", result)
- }
- // 示例4:发送顺序消息
- fmt.Println("\n=== 发送顺序消息 ===")
- for i := 1; i <= 5; i++ {
- body := fmt.Sprintf("Order message %d", i)
- result, err = producer.SendOrderMessage("OrderTopic", body, "order-key-1", "OrderTag")
- if err != nil {
- log.Printf("发送顺序消息失败: %v", err)
- } else {
- fmt.Printf("顺序消息发送成功 [%d]: %+v\n", i, result)
- }
- time.Sleep(100 * time.Millisecond)
- }
- // 等待中断信号
- waitForInterruptA()
- }
- // waitForInterrupt 等待中断信号
- func waitForInterruptA() {
- sigChan := make(chan os.Signal, 1)
- signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
- <-sigChan
- fmt.Println("\n接收到中断信号,程序退出...")
- }
|