Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie RabbitMQ zum Implementieren der Nachrichtenwarteschlange in der Golang-Anwendung

So verwenden Sie RabbitMQ zum Implementieren der Nachrichtenwarteschlange in der Golang-Anwendung

WBOY
WBOYOriginal
2023-06-05 17:21:041449Durchsuche

Mit dem Aufkommen verteilter Anwendungen und Microservice-Architekturen sind Nachrichtenwarteschlangen zu einem wichtigen Mittel zur Lösung der Kommunikation und Datenverarbeitung zwischen Anwendungen geworden. Mit der rasanten Entwicklung des Cloud Computing, des Internets, des mobilen Internets und des Internets der Dinge wird der Bedarf an Datenaustausch zwischen Serverclustern und effizienter Kommunikation zwischen Anwendungen immer stärker, da RabbitMQ eine leistungsstarke Multiprotokollunterstützung bietet , Ein Nachrichtenwarteschlangensystem auf Unternehmensebene mit hoher Skalierbarkeit ist heute zu einer der beliebtesten Nachrichtenwarteschlangen geworden. In diesem Artikel wird erläutert, wie Sie mit RabbitMQ Nachrichtenwarteschlangen in Golang-Anwendungen implementieren.

1. Was ist RabbitMQ?

RabbitMQ ist eine Open-Source-Message-Queuing-Software, die den Advanced Message Queuing Protocol (AMQP)-Standard implementiert. Es ist in Erlang-Sprache geschrieben und zeichnet sich durch hohe Skalierbarkeit, Durchsatz und Zuverlässigkeit aus. RabbitMQ verwendet Nachrichten zur Übermittlung von Daten und ermöglicht es Anwendungen, Nachrichten in Warteschlangen zu speichern, damit andere Anwendungen sie asynchron lesen und verarbeiten können.

2. Installation und Konfiguration von RabbitMQ

Zuerst müssen Sie das Installationspaket der entsprechenden Plattform von der offiziellen Website von RabbitMQ herunterladen. Nach der Installation müssen Sie die RabbitMQ-Konfigurationsdatei Rabbitmq.config ändern, um die Standardportnummer von RabbitMQ und die aktivierten Plug-Ins anzugeben.

Beispielcode der Konfigurationsdatei Rabbitmq.config:

[
{rabbit, [{tcp_listeners, [{"0.0.0.0", 5672}]}]},
{rabbitmq_management, [{listener, [{port, 15672 }]}]}
].

3. So verwenden Sie RabbitMQ in Golang

  1. Installieren Sie den RabbitMQ-Client

Um RabbitMQ in Golang-Anwendungen zu verwenden, müssen Sie zuerst den RabbitMQ-Client installieren Installieren Sie es:

Holen Sie sich github.com/streadway/amqp

  1. RabbitMQ verbinden

Bevor Sie RabbitMQ in Golang verwenden, müssen Sie eine Verbindung mit dem RabbitMQ-Server herstellen. Für die Verbindung mit RabbitMQ müssen Parameter wie Hostadresse, Port, virtueller Host, Benutzer und Passwort des RabbitMQ-Servers konfiguriert werden.

Beispielcode zum Herstellen einer Verbindung mit RabbitMQ:

conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")

  1. Kanal erstellen

In RabbitMQ können Sie eine Verbindung herstellen Eine Verbindung. Öffnen Sie darin mehrere Kanäle. Kanal ist der Kommunikationskanal zwischen RabbitMQ und Anwendungen, der zum Senden und Empfangen von Nachrichten sowie zum Einrichten von Warteschlangen und anderen Vorgängen verwendet wird.

Beispielcode zum Erstellen eines Kanals:

ch, err := conn.Channel()

  1. Warteschlange erstellen

In RabbitMQ werden Warteschlangen zum Speichern von Nachrichten verwendet. Eine Warteschlange ist ein benannter Nachrichtenpuffer, der von einer Anwendung gesendete Nachrichten enthält.

Beispielcode zum Erstellen einer Warteschlange:

q, err := ch.QueueDeclare(

"hello",    //队列名称
false,      //是否持久化队列
false,      //是否自动删除
false,      //是否独占队列
false,      //队列阻塞等待
nil,        //额外的属性

)

  1. Eine Nachricht senden

Verwenden Sie in RabbitMQ die Methode basic.publish, um eine Nachricht an die Warteschlange zu senden. Die Nachricht besteht aus zwei Teilen: Attributen und Nutzlast. Eigenschaften enthalten einige Metadaten der Nachricht, z. B. ob die Nachricht dauerhaft ist, Nachrichtenpriorität usw. Die Nutzlast ist der tatsächlich gesendete Nachrichteninhalt.

Beispielcode zum Senden von Nachrichten:

err = ch.Publish(

"",         //交换机名称
q.Name,     //队列名称
false,      //是否强制发送到队列
false,      //是否持久化消息
amqp.Publishing {
    ContentType: "text/plain",
    Body:        []byte("Hello World!"),
},

)

  1. Nachrichten empfangen

Verwenden Sie in RabbitMQ die Methode basic.consume, um die Nachrichtenwarteschlange zu abonnieren. Wenn eine Nachricht eintrifft, Es wird aufgerufen. Die Rückruffunktion verarbeitet die Nachricht.

Beispielcode zum Empfangen von Nachrichten:

msgs, err := ch.Consume(

q.Name, //队列名称
"",     //用于区分多个消费者
true,   //是否自动确认消息
false,  //是否独占队列
false,  //队列阻塞等待
nil,    //额外的属性

)

go func() {

for d := range msgs {
    log.Printf("Received a message: %s", d.Body)
}

}()

IV. Zusammenfassung

Die Verwendung der Nachrichtenwarteschlange ist eine Verbesserung effektive Methode zur Kommunikation und Datenverarbeitungseffizienz zwischen Anwendungen, und RabbitMQ ist als Nachrichtenwarteschlangensystem mit hoher Skalierbarkeit, Durchsatz und Zuverlässigkeit zu einer der beliebtesten Nachrichtenwarteschlangen heute geworden. Um RabbitMQ zum Implementieren von Nachrichtenwarteschlangen in Golang-Anwendungen zu verwenden, müssen Sie zuerst den RabbitMQ-Client installieren, eine Verbindung mit dem RabbitMQ-Server herstellen, Kanäle und Warteschlangen erstellen sowie Nachrichten senden und empfangen. In diesem Artikel werden die Grundkonzepte von RabbitMQ und die Verwendung von RabbitMQ zum Implementieren von Nachrichtenwarteschlangen in Golang-Anwendungen vorgestellt. Ich hoffe, dass er Golang-Entwicklern eine Referenz zum Erlernen und Verwenden von RabbitMQ bieten kann.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie RabbitMQ zum Implementieren der Nachrichtenwarteschlange in der Golang-Anwendung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn