consumer.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package main
  2. import (
  3. "log"
  4. "github.com/streadway/amqp"
  5. )
  6. func failOnError(err error, msg string) {
  7. if err != nil {
  8. log.Fatalf("%s: %s", msg, err)
  9. }
  10. }
  11. func main() {
  12. conn, err := amqp.Dial("amqp://user:J70e6K7BRrxrU1dO@rabbitmq.rabbitmq.svc.cluster.local:5672/")
  13. failOnError(err, "Failed to connect to RabbitMQ")
  14. defer conn.Close()
  15. ch, err := conn.Channel()
  16. failOnError(err, "Failed to open a channel")
  17. defer ch.Close()
  18. q, err := ch.QueueDeclare(
  19. "task_queue", // 队列名称
  20. true, // durable 持久化队列
  21. false, // autoDelete
  22. false, // exclusive
  23. false, // noWait
  24. nil, // arguments
  25. )
  26. failOnError(err, "Failed to declare a queue")
  27. msgs, err := ch.Consume(
  28. q.Name, // queue
  29. "", // consumer
  30. true, // auto-ack
  31. false, // exclusive
  32. false, // no-local
  33. false, // no-wait
  34. nil, // args
  35. )
  36. failOnError(err, "Failed to register a consumer")
  37. log.Println(" [*] Waiting for messages. To exit press CTRL+C")
  38. forever := make(chan bool)
  39. go func() {
  40. for d := range msgs {
  41. log.Printf("Received a message: %s", d.Body)
  42. }
  43. }()
  44. <-forever
  45. }