阿里云Rabbitmq Go SDK使用示例

简介: 本文主要演示如何使用开源Go SDK连接阿里云Rabbitmq。

Step By Step

1、RabbitMq控制台创建实例以及用户名&密码&Vhost

image.png

image.png


image.png


2、SDK 安装

gogetgithub.com/streadway/amqp

3、Send.go

packagemainimport (
"bytes""fmt""log""github.com/streadway/amqp")
funcfailOnError(errerror, msgstring) {
iferr!=nil {
log.Fatalf("%s: %s", msg, err)
    }
}
funcmain() {
varbufbytes.BufferuserName :="<username>"password :="<password>"buf.WriteString("amqp://")
buf.WriteString(userName)
buf.WriteString(":")
buf.WriteString(password)
// <Your End Point> 请从控制台获取。如果你使用的是杭州Region,那么Endpoint会形如 137000000010111.mq-amqp.cn-hangzhou-a.aliyuncs.combuf.WriteString("@<endpoint>:5672/<vhost>")
url :=buf.String()
fmt.Println(url)
conn, err :=amqp.Dial(url)
failOnError(err, "Failed to connect to RabbitMQ")
deferconn.Close()
ch, err :=conn.Channel()
failOnError(err, "Failed to open a channel")
deferch.Close()
q, err :=ch.QueueDeclare(
"helloqueue", // namefalse,        // durablefalse,        // delete when unusedfalse,        // exclusivefalse,        // no-waitnil,          // arguments    )
failOnError(err, "Failed to declare a queue")
body :="Hello World!"err=ch.Publish(
"",     // exchangeq.Name, // routing keyfalse,  // mandatoryfalse,  // immediateamqp.Publishing{
ContentType: "text/plain",
Body:        []byte(body),
        })
failOnError(err, "Failed to publish a message")
log.Printf(" [x] Sent %s", body)
}

4、Receive.go

packagemainimport (
"bytes""fmt""log""github.com/streadway/amqp")
funcfailOnError(errerror, msgstring) {
iferr!=nil {
log.Fatalf("%s: %s", msg, err)
    }
}
funcmain() {
varbufbytes.BufferuserName :="<username>"password :="<password>"buf.WriteString("amqp://")
buf.WriteString(userName)
buf.WriteString(":")
buf.WriteString(password)
// <Your End Point> 请从控制台获取。如果你使用的是杭州Region,那么Endpoint会形如 137000000010111.mq-amqp.cn-hangzhou-a.aliyuncs.combuf.WriteString("@<endpoint>:5672/<vhost>")
url :=buf.String()
fmt.Println(url)
conn, err :=amqp.Dial(url)
failOnError(err, "Failed to connect to RabbitMQ")
deferconn.Close()
ch, err :=conn.Channel()
failOnError(err, "Failed to open a channel")
deferch.Close()
q, err :=ch.QueueDeclare(
"helloqueue", // namefalse,        // durablefalse,        // delete when unusedfalse,        // exclusivefalse,        // no-waitnil,          // arguments    )
failOnError(err, "Failed to declare a queue")
msgs, err :=ch.Consume(
q.Name,   // queue"democs", // consumertrue,     // auto-ackfalse,    // exclusivefalse,    // no-localfalse,    // no-waitnil,      // args    )
failOnError(err, "Failed to register a consumer")
forever :=make(chanbool)
gofunc() {
ford :=rangemsgs {
log.Printf("Received a message: %s", d.Body)
        }
    }()
log.Printf(" [*] Waiting for messages. To exit press CTRL+C")
<-forever}

5、The Result

image.png

6、控制台监控查看

image.png

更多参考

rabbitmq-tutorials

tutorial-one-go

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
8月前
|
SQL 监控 Go
新一代 Cron-Job分布式调度平台,v1.0.8版本发布,支持Go执行器SDK!
现代化的Cron-Job分布式任务调度平台,支持Go语言执行器SDK,多项核心优势优于其他调度平台。
164 8
|
存储 Java API
【Azure 存储服务】Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP得代码原型后人力验证)
【Azure 存储服务】Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP得代码原型后人力验证)
155 0
|
JSON 安全 Go
Go语言中使用JWT鉴权、Token刷新完整示例,拿去直接用!
本文介绍了如何在 Go 语言中使用 Gin 框架实现 JWT 用户认证和安全保护。JWT(JSON Web Token)是一种轻量、高效的认证与授权解决方案,特别适合微服务架构。文章详细讲解了 JWT 的基本概念、结构以及如何在 Gin 中生成、解析和刷新 JWT。通过示例代码,展示了如何在实际项目中应用 JWT,确保用户身份验证和数据安全。完整代码可在 GitHub 仓库中查看。
2180 1
|
JSON Go API
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
|
Java 开发工具
【Azure Developer】示例: 在中国区调用MSGraph SDK通过User principal name获取到User信息,如Object ID
【Azure Developer】示例: 在中国区调用MSGraph SDK通过User principal name获取到User信息,如Object ID
154 1
|
Shell Go 开发工具
【Azure Developer】Go语言调用Azure SDK如何登录到中国区Azure环境
【Azure Developer】Go语言调用Azure SDK如何登录到中国区Azure环境
171 0
|
JSON Java API
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
129 0
|
存储 API 开发工具
【Azure Developer】使用 Python SDK连接Azure Storage Account, 计算Blob大小代码示例
【Azure Developer】使用 Python SDK连接Azure Storage Account, 计算Blob大小代码示例
173 0
|
Java 开发工具 Windows
【Azure Developer】调用SDK的runPowerShellScript方法,在Azure VM中执行PowerShell脚本示例
【Azure Developer】调用SDK的runPowerShellScript方法,在Azure VM中执行PowerShell脚本示例
124 0
|
消息中间件 Go SEO
go rabbitmq 使用教程 ,go rabbitmq 简单队列,go rabbitmq work模式,go rabbitmq 订阅模式
go rabbitmq 使用教程 ,go rabbitmq 简单队列,go rabbitmq work模式,go rabbitmq 订阅模式
474 0