jack 4 månader sedan
förälder
incheckning
ea71a8b3ac
4 ändrade filer med 110 tillägg och 0 borttagningar
  1. 55 0
      rabbitmq_go/consumer.go
  2. 5 0
      rabbitmq_go/go.mod
  3. 2 0
      rabbitmq_go/go.sum
  4. 48 0
      rabbitmq_go/producer.go

+ 55 - 0
rabbitmq_go/consumer.go

@@ -0,0 +1,55 @@
+package main
+
+import (
+	"log"
+
+	"github.com/streadway/amqp"
+)
+
+func failOnError(err error, msg string) {
+	if err != nil {
+		log.Fatalf("%s: %s", msg, err)
+	}
+}
+
+func main() {
+	conn, err := amqp.Dial("amqp://user:J70e6K7BRrxrU1dO@rabbitmq.rabbitmq.svc.cluster.local:5672/")
+	failOnError(err, "Failed to connect to RabbitMQ")
+	defer conn.Close()
+
+	ch, err := conn.Channel()
+	failOnError(err, "Failed to open a channel")
+	defer ch.Close()
+
+	q, err := ch.QueueDeclare(
+		"task_queue", // 队列名称
+		true,         // durable 持久化队列
+		false,        // autoDelete
+		false,        // exclusive
+		false,        // noWait
+		nil,          // arguments
+	)
+	failOnError(err, "Failed to declare a queue")
+
+	msgs, err := ch.Consume(
+		q.Name, // queue
+		"",     // consumer
+		true,   // auto-ack
+		false,  // exclusive
+		false,  // no-local
+		false,  // no-wait
+		nil,    // args
+	)
+	failOnError(err, "Failed to register a consumer")
+
+	log.Println(" [*] Waiting for messages. To exit press CTRL+C")
+	forever := make(chan bool)
+
+	go func() {
+		for d := range msgs {
+			log.Printf("Received a message: %s", d.Body)
+		}
+	}()
+
+	<-forever
+}

+ 5 - 0
rabbitmq_go/go.mod

@@ -0,0 +1,5 @@
+module rabbitmq_go
+
+go 1.22.2
+
+require github.com/streadway/amqp v1.1.0 // indirect

+ 2 - 0
rabbitmq_go/go.sum

@@ -0,0 +1,2 @@
+github.com/streadway/amqp v1.1.0 h1:py12iX8XSyI7aN/3dUT8DFIDJazNJsVJdxNVEpnQTZM=
+github.com/streadway/amqp v1.1.0/go.mod h1:WYSrTEYHOXHd0nwFeUXAe2G2hRnQT+deZJJf88uS9Bg=

+ 48 - 0
rabbitmq_go/producer.go

@@ -0,0 +1,48 @@
+package main
+
+import (
+	"log"
+
+	"github.com/streadway/amqp"
+)
+
+func failOnError(err error, msg string) {
+	if err != nil {
+		log.Fatalf("%s: %s", msg, err)
+	}
+}
+
+func main() {
+	conn, err := amqp.Dial("amqp://user:J70e6K7BRrxrU1dO@rabbitmq.rabbitmq.svc.cluster.local:5672/")
+	failOnError(err, "Failed to connect to RabbitMQ")
+	defer conn.Close()
+
+	ch, err := conn.Channel()
+	failOnError(err, "Failed to open a channel")
+	defer ch.Close()
+
+	q, err := ch.QueueDeclare(
+		"task_queue", // 队列名称
+		true,         // durable 持久化队列
+		false,        // autoDelete
+		false,        // exclusive
+		false,        // noWait
+		nil,          // arguments
+	)
+	failOnError(err, "Failed to declare a queue")
+
+	body := "Hello Persistent RabbitMQ Message"
+	err = ch.Publish(
+		"",     // exchange
+		q.Name, // routing key
+		false,  // mandatory
+		false,  // immediate
+		amqp.Publishing{
+			DeliveryMode: amqp.Persistent, // 持久化消息
+			ContentType:  "text/plain",
+			Body:         []byte(body),
+		})
+	failOnError(err, "Failed to publish a message")
+
+	log.Printf(" [x] Sent %s\n", body)
+}