Golang RabbitMQ: 高可用性メッセージ キュー システムを構築するためのベスト プラクティス。具体的なコード例が必要です。
1.1 プロデューサ: メッセージ キューへのメッセージの送信を担当します。
1.2 Consumer: メッセージ キューからのメッセージの受信と処理を担当します。
1.3 メッセージ キュー: メッセージの順序性と信頼性を確保するためにメッセージを保存するコンテナー。
最初に、RabbitMQ をインストールする必要があります。公式ウェブサイトからダウンロードし、公式ガイドに従ってインストールできます。
Golang を使用して RabbitMQ と対話するには、RabbitMQ の Golang クライアント ライブラリを使用する必要があります。次のコマンドを使用して、依存パッケージをインストールできます:
go get github.com/streadway/amqp2.3 RabbitMQ への接続
RabbitMQ への接続が最初のステップです。接続文字列を介して RabbitMQ サービスに接続し、新しい接続を作成する必要があります。 object:
import "github.com/streadway/amqp" func main() { conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/") if err != nil { log.Fatalf("Failed to connect to RabbitMQ: %s", err) } defer conn.Close() ... }2.4 チャネルの作成
RabbitMQ では、チャネルはほとんどの API 呼び出しが行われる場所です。新しいチャネル オブジェクトを作成する必要があります:
func main() { ... ch, err := conn.Channel() if err != nil { log.Fatalf("Failed to open a channel: %s", err) } defer ch.Close() ... }2.5 スイッチとキューの宣言
RabbitMQ を使用する前に、スイッチとキューを宣言して、それらが存在し、使用可能であることを確認する必要があります:
func main() { ... err = ch.ExchangeDeclare( "exchange_name", // 交换机名称 "direct", // 交换机类型 true, // 是否持久化 false, // 是否自动删除 false, // 是否内部使用 false, // 是否等待通知 nil, // 其他属性 ) if err != nil { log.Fatalf("Failed to declare an exchange: %s", err) } _, err = ch.QueueDeclare( "queue_name", // 队列名称 true, // 是否持久化 false, // 是否自动删除 false, // 是否独立 false, // 是否等待通知 nil, // 其他属性 ) if err != nil { log.Fatalf("Failed to declare a queue: %s", err) } ... }
2.6 メッセージをキューにパブリッシュする
Channel.Publish メソッドを呼び出すことで、指定したキューにメッセージをパブリッシュできます。 func main() { ... err = ch.Publish( "exchange_name", // 交换机名称 "routing_key", // 路由键 false, // 是否等待应答 false, // 是否立即发送 amqp.Publishing{ ContentType: "text/plain", Body: []byte("Hello, RabbitMQ!"), }, // 消息内容 ) if err != nil { log.Fatalf("Failed to publish a message: %s", err) } ... }
You
Channel.Consume メソッドを呼び出して、指定されたキュー内のメッセージをサブスクライブできます: func main() { ... msgs, err := ch.Consume( "queue_name", // 队列名称 "", // 消费者名称 true, // 是否自动应答 false, // 是否独立(非独占非排他) false, // 是否阻塞 false, // 是否等待通知 nil, // 其他属性 ) if err != nil { log.Fatalf("Failed to consume a message: %s", err) } go func() { for msg := range msgs { log.Printf("Received a message: %s", msg.Body) // 处理消息 } }() select {} }
以上がGolang RabbitMQ: 高可用性メッセージ キュー システムを構築するためのベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。