Maison > développement back-end > Golang > Pourquoi mon programme Go n'utilise-t-il pas correctement la bibliothèque RabbitMQ ?

Pourquoi mon programme Go n'utilise-t-il pas correctement la bibliothèque RabbitMQ ?

PHPz
Libérer: 2023-06-09 17:40:13
original
972 Les gens l'ont consulté

Avec l'avènement de l'ère du Big Data, les files d'attente de messages, en tant que méthode de communication efficace, sont de plus en plus largement utilisées dans la conception de logiciels. RabbitMQ, en tant que bibliothèque de files d'attente de messages populaire, est également privilégiée par les programmeurs. Cependant, certains programmeurs peuvent rencontrer des problèmes lors de l'utilisation de la bibliothèque RabbitMQ. Cet article présente quelques problèmes courants et comment les résoudre.

  1. Erreur d'importation de package

Dans les programmes Go, nous devons utiliser des bibliothèques externes via des instructions d'importation. Si nous voulons utiliser la bibliothèque RabbitMQ, nous devons alors ajouter l'instruction d'importation suivante au code :

import (
    "github.com/streadway/amqp"
)
Copier après la connexion

Si vous rencontrez le message d'erreur suivant :

cannot find package "github.com/streadway/amqp" in any of:
    /usr/local/go/src/github.com/streadway/amqp (from $GOROOT)
    /Users/username/go/src/github.com/streadway/amqp (from $GOPATH)
Copier après la connexion

Alors vous pouvez essayer d'utiliser la commande suivante Installer RabbitMQ :

go get github.com/streadway/amqp
Copier après la connexion
  1. Connection error

Lorsque nous établissons la connexion RabbitMQ par le code suivant :

conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
Copier après la connexion

Vous pouvez rencontrer l'erreur suivante :

dial tcp 127.0.0.1:5672: getsockopt: connection refused
Copier après la connexion

Cela est dû au fait que le service RabbitMQ n'est pas démarré correctement. Vous pouvez vérifier l'état de RabbitMQ et le démarrer via la ligne de commande :

systemctl status rabbitmq-server
systemctl start rabbitmq-server
Copier après la connexion
  1. Erreur de file d'attente de déclaration

Lors de l'utilisation de RabbitMQ, nous devons déclarez la file d'attente pour stocker le message. Lorsque nous déclarons une file d'attente via le code suivant :

ch, err := conn.Channel()
q, err := ch.QueueDeclare("hello", false, false, false, false, nil)
Copier après la connexion

nous pouvons rencontrer l'erreur suivante :

channel/connection is not open
Copier après la connexion

C'est parce que nous devons nous assurer que la connexion et le canal sont tous deux ouvrir. Cela peut être assuré par le code suivant :

conn, _ := amqp.Dial("amqp://guest:guest@localhost:5672/")
defer conn.Close()

ch, _ := conn.Channel()
defer ch.Close()

q, _ := ch.QueueDeclare("hello", false, false, false, false, nil)
Copier après la connexion
  1. Erreur de message de publication

Lorsque nous publions le message en suivant le code : #🎜🎜 #

err = ch.Publish("", "hello", false, false, amqp.Publishing{
    ContentType: "text/plain",
    Body:        []byte("Hello World!"),
})
Copier après la connexion

Vous pouvez rencontrer l'erreur suivante :

no route to host
Copier après la connexion

C'est parce que nous n'avons pas configuré correctement les échanges ou les files d'attente. Cela peut être assuré par le code suivant :

err := ch.Publish(
    "amq.direct", // exchange
    q.Name,       // routing key
    false,        // mandatory
    false,
    amqp.Publishing {
        ContentType: "text/plain",
        Body:        []byte("Hello World!"),
})
Copier après la connexion
En bref, l'utilisation de la bibliothèque RabbitMQ peut obtenir une messagerie efficace et fiable dans les programmes Go. Si vous rencontrez un problème, dans la plupart des cas, il vous suffit de vérifier si votre code est correct. J'espère que cet article vous sera utile.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal