golang整合rabbitmq,创建交换机并绑定队列

1,如果要开发消息队列,需要创建交换机和队列,通常有2中方式创建,1种是在面板直接创建

2,第二种就是在代码中创建,这里 展示的是go语言代码中创建rabbitmq

c 复制代码
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!")
}
相关推荐
花酒锄作田2 小时前
[Python][Go]比较两个JSON文件之间的差异
python·golang
在未来等你4 小时前
RabbitMQ面试精讲 Day 16:生产者优化策略与实践
中间件·面试·消息队列·rabbitmq
阿狗哲哲4 小时前
Java选手如何看待Golang
java·开发语言·golang
在未来等你15 小时前
RabbitMQ面试精讲 Day 13:HAProxy与负载均衡配置
中间件·面试·消息队列·rabbitmq
刘大辉在路上15 小时前
以rabbitmq为例演示podman导出导入镜像文件
分布式·rabbitmq·podman
Runing_WoNiu16 小时前
Golang 与Java 单例模式、工厂模式比较
java·单例模式·golang
胡萝卜的兔17 小时前
go语言标准库学习, fmt标准输出,Time 时间,Flag,Log日志,Strconv
开发语言·学习·golang
adminwolf20 小时前
基于Vue.js和Golang构建高效在线客服系统:前端实现与后端交互详解
前端·vue.js·golang
zhoupenghui1681 天前
golang实现支持100万个并发连接(例如,HTTP长连接或WebSocket连接)系统架构设计详解
开发语言·后端·websocket·golang·系统架构·echo·100万并发
都叫我大帅哥1 天前
🐇 RabbitMQ延时队列:让消息学会“踩点上班”的终极指南
java·rabbitmq