阿里云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版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
2月前
|
消息中间件 存储 Serverless
【实践】快速学会使用阿里云消息队列RabbitMQ版
云消息队列 RabbitMQ 版是一款基于高可用分布式存储架构实现的 AMQP 0-9-1协议的消息产品。云消息队列 RabbitMQ 版兼容开源 RabbitMQ 客户端,解决开源各种稳定性痛点(例如消息堆积、脑裂等问题),同时具备高并发、分布式、灵活扩缩容等云消息服务优势。
106 2
|
4月前
|
存储 Java API
【Azure 存储服务】Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP得代码原型后人力验证)
【Azure 存储服务】Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP得代码原型后人力验证)
|
24天前
|
JSON 安全 Go
Go语言中使用JWT鉴权、Token刷新完整示例,拿去直接用!
本文介绍了如何在 Go 语言中使用 Gin 框架实现 JWT 用户认证和安全保护。JWT(JSON Web Token)是一种轻量、高效的认证与授权解决方案,特别适合微服务架构。文章详细讲解了 JWT 的基本概念、结构以及如何在 Gin 中生成、解析和刷新 JWT。通过示例代码,展示了如何在实际项目中应用 JWT,确保用户身份验证和数据安全。完整代码可在 GitHub 仓库中查看。
90 1
|
2月前
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
64 7
|
3月前
|
JSON Go API
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
|
4月前
|
Java 开发工具
通过Java SDK调用阿里云模型服务
在阿里云平台上,可以通过创建应用并使用模型服务完成特定任务,如生成文章内容。本示例展示了一段简化的Java代码,演示了如何调用阿里云模型服务生成关于“春秋战国经济与文化”的简短文章。示例代码通过设置系统角色为历史学家,并提出文章生成需求,最终处理并输出生成的文章内容。在实际部署前,请确保正确配置环境变量中的密钥和ID,并根据需要调整SDK导入语句及类名。更多详情和示例,请参考相关链接。
|
4月前
|
Java 开发工具
【Azure Developer】示例: 在中国区调用MSGraph SDK通过User principal name获取到User信息,如Object ID
【Azure Developer】示例: 在中国区调用MSGraph SDK通过User principal name获取到User信息,如Object ID
|
4月前
|
JSON Java API
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
|
4月前
|
存储 API 开发工具
【Azure Developer】使用 Python SDK连接Azure Storage Account, 计算Blob大小代码示例
【Azure Developer】使用 Python SDK连接Azure Storage Account, 计算Blob大小代码示例
|
4月前
|
Java 开发工具 Windows
【Azure Developer】调用SDK的runPowerShellScript方法,在Azure VM中执行PowerShell脚本示例
【Azure Developer】调用SDK的runPowerShellScript方法,在Azure VM中执行PowerShell脚本示例

相关实验场景

更多