package test import ( "code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit" "code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbitmq" "fmt" "github.com/streadway/amqp" "log" "strconv" "strings" "testing" ) const SingleQueueName = "test_single_queue" func TestSend(t *testing.T) { var host, port, user, pwd string log.SetFlags(log.Lshortfile | log.LstdFlags) log.Println("input host,port,user,pwd") fmt.Scanf("%s %s %s %s", &host, &port, &user, &pwd) if host == "" && port == "" && user == "" && pwd == "" { host = "119.23.182.117" port = "5672" user = "admin" pwd = "123456" } rabbitmq.Init(host, port, user, pwd) //第一个参数指定rabbitmq服务器的链接,第二个参数指定创建队列的名字 sendMq := rabbitmq.New(rabbitmq.Cfg.Uri, SingleQueueName) i := 0 for { if i > 99 { break } //time.Sleep(time.Second * 1) greetings := []string{"HelloWorld!", strconv.Itoa(i)} sendMq.Send(SingleQueueName, strings.Join(greetings, " ")) i = i + 1 } } func TestReceive(t *testing.T) { var host, port, user, pwd string log.SetFlags(log.Lshortfile | log.LstdFlags) log.Println("input host,port,user,pwd") fmt.Scanf("%s %s %s %s", &host, &port, &user, &pwd) if host == "" && port == "" && user == "" && pwd == "" { host = "119.23.182.117" port = "5672" user = "admin" pwd = "123456" } //ch, err := GetChannel rabbitmq.Init(host, port, user, pwd) //第一个参数指定rabbitmq服务器的链接,第二个参数指定创建队列的名字 receiveMq := rabbitmq.New(rabbitmq.Cfg.Uri, SingleQueueName) //for { receiveMq.Qos(1) //接收消息时,指定 messages := receiveMq.Consume() forever := make(chan bool) //开辟管道 var i = 0 //启用协程处理消息 go func() { for msg := range messages { log.Printf("Received a message: %s", msg.Body) i++ if i >= 5 { msg.Reject(true) receiveMq.CloseChannel() return } else { msg.Ack(false) } } }() log.Printf("[*] Waiting for message,To exit press CTRL+C") <-forever } func TestReceive1(t *testing.T) { var host, port, user, pwd string log.SetFlags(log.Lshortfile | log.LstdFlags) log.Println("input host,port,user,pwd") fmt.Scanf("%s %s %s %s", &host, &port, &user, &pwd) if host == "" && port == "" && user == "" && pwd == "" { host = "119.23.182.117" port = "5672" user = "admin" pwd = "123456" } rabbit.Init(host, port, user, pwd) ch, err := rabbit.Cfg.Pool.GetChannel() if err != nil { fmt.Println(err.Error()) } defer ch.Release() ch.Qos(5) delivery := ch.Consume(SingleQueueName, false) var res amqp.Delivery var ok bool //for { res, ok = <-delivery if ok == true { fmt.Println(string(res.Body)) _ = res.Ack(false) } else { fmt.Println("error getting message") //break } //} fmt.Println("get msg done") } func TestReceive2(t *testing.T) { var host, port, user, pwd string log.SetFlags(log.Lshortfile | log.LstdFlags) log.Println("input host,port,user,pwd") fmt.Scanf("%s %s %s %s", &host, &port, &user, &pwd) if host == "" && port == "" && user == "" && pwd == "" { host = "119.23.182.117" port = "5672" user = "admin" pwd = "123456" } //ch, err := GetChannel rabbitmq.Init(host, port, user, pwd) //第一个参数指定rabbitmq服务器的链接,第二个参数指定创建队列的名字 receiveMq := rabbitmq.New(rabbitmq.Cfg.Uri, SingleQueueName) //for { receiveMq.Qos(1) //接收消息时,指定 messages, ok, err := receiveMq.Get() if err != nil { t.Fatalf("Failed get: %v", err) } if !ok { t.Fatalf("Get on a queued message did not find the message") } fmt.Println(">>>>>>ok>>>>>>", ok) fmt.Println(">>>>>>messages>>>>>>", string(messages.Body)) }