1,如果要开发消息队列,需要创建交换机和队列,通常有2中方式创建,1种是在面板直接创建
2,第二种就是在代码中创建,这里 展示的是go语言代码中创建rabbitmq
package main
import (
"fmt"
"log"
"github.com/streadway/amqp"
)
func main() {
// 连接RabbitMQ服务器
conn, err := amqp.Dial("amqp://guest:guest@服务器地址:5672/")
if err != nil {
log.Fatalf("Failed to connect to RabbitMQ: %v", err)
}
defer conn.Close()
// 创建一个通道
ch, err := conn.Channel()
if err != nil {
log.Fatalf("Failed to open a channel: %v", err)
}
defer ch.Close()
// 声明一个交换机
err = ch.ExchangeDeclare(
"my_exchange", // 交换机名称
"direct", // 交换机类型
true, // 是否持久化
false, // 是否自动删除
false, // 是否内部使用
false, // 是否等待确认
nil, // 其他属性
)
if err != nil {
log.Fatalf("Failed to declare an exchange: %v", err)
}
// 声明一个队列
q, err := ch.QueueDeclare(
"my_queue", // 队列名称
true, // 是否持久化
false, // 是否自动删除
false, // 是否排他
false, // 是否等待确认
nil, // 其他属性
)
if err != nil {
log.Fatalf("Failed to declare a queue: %v", err)
}
// 绑定队列到交换机
err = ch.QueueBind(
q.Name, // 队列名称
"my_routing_key", // 路由键
"my_exchange", // 交换机名称
false, // 是否等待确认
nil, // 其他属性
)
if err != nil {
log.Fatalf("Failed to bind a queue: %v", err)
}
fmt.Println("Exchange and queue created and bound successfully!")
}