Dengan kemunculan era data besar, baris gilir mesej, sebagai kaedah komunikasi yang cekap, semakin banyak digunakan dalam reka bentuk perisian. RabbitMQ, sebagai perpustakaan baris gilir mesej yang popular, juga digemari oleh pengaturcara. Walau bagaimanapun, sesetengah pengaturcara mungkin menghadapi beberapa masalah apabila menggunakan perpustakaan RabbitMQ Artikel ini akan memperkenalkan beberapa masalah biasa dan cara menyelesaikannya.
Dalam program Go, kita perlu menggunakan pustaka luaran melalui pernyataan import. Jika kita ingin menggunakan perpustakaan RabbitMQ, maka kita perlu menambah pernyataan import berikut dalam kod:
import ( "github.com/streadway/amqp" )
Jika anda menghadapi mesej ralat berikut:
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)
Kemudian anda boleh cuba memasang RabbitMQ menggunakan arahan berikut:
go get github.com/streadway/amqp
Apabila kami mewujudkan sambungan RabbitMQ melalui kod berikut:
rreeeKami mungkin menghadapi perkara berikut ralat:
conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
Ini kerana perkhidmatan RabbitMQ tidak dimulakan dengan betul. Anda boleh menyemak status RabbitMQ dan mulakannya melalui baris arahan:
dial tcp 127.0.0.1:5672: getsockopt: connection refused
Apabila menggunakan RabbitMQ, kita perlu mengisytiharkan baris gilir untuk menyimpan mesej . Apabila kami mengisytiharkan baris gilir melalui kod berikut:
systemctl status rabbitmq-server systemctl start rabbitmq-server
kami mungkin menghadapi ralat berikut:
ch, err := conn.Channel() q, err := ch.QueueDeclare("hello", false, false, false, false, nil)
Ini kerana kami perlu memastikan kedua-dua sambungan dan saluran dibuka. Ini boleh dipastikan dengan kod berikut:
channel/connection is not open
Apabila kami menghantar mesej dengan mengikut kod:
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)
mungkin dihadapi Ralat berikut:
err = ch.Publish("", "hello", false, false, amqp.Publishing{ ContentType: "text/plain", Body: []byte("Hello World!"), })
Ini kerana kami tidak menyediakan pertukaran atau baris gilir dengan betul. Ini boleh dipastikan dengan kod berikut:
no route to host
Ringkasnya, menggunakan perpustakaan RabbitMQ boleh mencapai pemesejan yang cekap dan boleh dipercayai dalam program Go. Jika anda menghadapi masalah, dalam kebanyakan kes anda hanya perlu menyemak sama ada kod anda adalah betul. Saya harap artikel ini akan membantu anda.
Atas ialah kandungan terperinci Mengapa program Go saya tidak menggunakan perpustakaan RabbitMQ dengan betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!