当前位置: 首页 > news >正文

网站布局模板备案新增网站备案

网站布局模板,备案新增网站备案,黄山旅游必去十大景点,物联网平台软件在 Go 语言中对接阿里云消息队列#xff08;MQ#xff09;的 RabbitMQ 配置与调用#xff0c;首先需要安装和配置相关的 Go 库#xff0c;并了解如何通过 RabbitMQ 与阿里云消息队列进行交互。 ### 步骤一#xff1a;安装 RabbitMQ Go 客户端库 阿里云的消息队列#x…在 Go 语言中对接阿里云消息队列MQ的 RabbitMQ 配置与调用首先需要安装和配置相关的 Go 库并了解如何通过 RabbitMQ 与阿里云消息队列进行交互。 ### 步骤一安装 RabbitMQ Go 客户端库 阿里云的消息队列MQ实际上是基于 **RabbitMQ** 实现的因此可以使用标准的 RabbitMQ Go 客户端库来对接。 你可以使用 [github.com/rabbitmq/amqp091-go](github.com/rabbitmq/amqp091-go) 库这是 Go 语言中常用的 RabbitMQ 客户端库。 bash go get github.com/rabbitmq/amqp091-go ### 步骤二配置阿里云消息队列的连接信息 首先需要获取阿里云消息队列的连接信息包括 - **接入点Endpoint**这是消息队列的服务器地址通常可以在阿里云控制台的消息队列管理页面找到。 - **AccessKey 和 SecretKey**这是用于认证和访问阿里云服务的凭证。 ### 步骤三创建连接和通道 在 Go 代码中使用 AMQP 协议连接到 RabbitMQ 服务。阿里云的消息队列支持 AMQP 协议所以可以直接通过它来连接。go package mainimport (fmtloggithub.com/streadway/amqp )func main() {// 阿里云 MQ 的连接信息amqpURL : amqp://AccessKey:SecretKeyEndpoint/vhost // 根据实际情况填写conn, err : amqp.Dial(amqpURL)if err ! nil {log.Fatalf(Failed to connect to RabbitMQ: %s, err)}defer conn.Close()// 创建一个通道Channelch, err : conn.Channel()if err ! nil {log.Fatalf(Failed to open a channel: %s, err)}defer ch.Close()// 创建一个队列q, err : ch.QueueDeclare(testQueue, // 队列名称true,        // 是否持久化false,       // 是否自动删除false,       // 是否具有独占权限false,       // 是否阻塞nil,         // 额外属性)if err ! nil {log.Fatalf(Failed to declare a queue: %s, err)}fmt.Printf(Queue declared: %s\n, q.Name)// 发布一条消息到队列body : Hello, this is a test message!err ch.Publish(,         // 默认交换机q.Name,     // 队列名称false,      // 是否等待服务器确认false,      // 是否设置强制推送amqp.Publishing{ContentType: text/plain,Body:        []byte(body),})if err ! nil {log.Fatalf(Failed to publish a message: %s, err)}fmt.Printf(Message sent: %s\n, body) } ### 代码解释 - **amqp.Dial**连接到 RabbitMQ阿里云 MQ的消息队列服务使用的是 AMQP 协议。在 URL 中需要包含 **AccessKey** 和 **SecretKey**格式是 amqp://AccessKey:SecretKeyEndpoint/vhost。   - AccessKey 和 SecretKey你在阿里云管理控制台中创建的 API 密钥。   - Endpoint你可以从阿里云 MQ 控制台获取到的接入点地址。   - /vhost虚拟主机通常是 /可以根据实际情况修改。    - **QueueDeclare**声明队列。队列是消息的载体在队列中存放的是等待被消费者取走的消息。这里使用了 **持久化队列**true表示即使服务器重启队列和消息也不会丢失。 - **Publish**将消息发送到指定的队列中。 ### 步骤四消费消息 除了发送消息消费者Consumer也需要从队列中获取消息并进行处理。go package mainimport (fmtloggithub.com/streadway/amqp )func main() {// 阿里云 MQ 的连接信息amqpURL : amqp://AccessKey:SecretKeyEndpoint/vhostconn, err : amqp.Dial(amqpURL)if err ! nil {log.Fatalf(Failed to connect to RabbitMQ: %s, err)}defer conn.Close()// 创建一个通道Channelch, err : conn.Channel()if err ! nil {log.Fatalf(Failed to open a channel: %s, err)}defer ch.Close()// 声明队列与生产者端一致q, err : ch.QueueDeclare(testQueue, // 队列名称true,        // 持久化false,       // 非自动删除false,       // 非独占false,       // 非阻塞nil,         // 额外属性)if err ! nil {log.Fatalf(Failed to declare a queue: %s, err)}// 获取消息msgs, err : ch.Consume(q.Name,    // 队列名称,        // 消费者标签true,      // 自动应答false,     // 独占false,     // 不阻塞false,     // 不获取nil,       // 额外属性)if err ! nil {log.Fatalf(Failed to register a consumer: %s, err)}fmt.Println(Waiting for messages. To exit press CTRLC)// 消费消息for msg : range msgs {fmt.Printf(Received a message: %s\n, msg.Body)} } ### 代码解释 - **Consume**消费者从队列中获取消息并处理。你可以设置 auto-ack自动应答为 true表示 RabbitMQ 在消息被接收后自动确认消息。如果需要手动确认可以设置为 false并手动发送确认。 - 消费者会一直运行并等待新的消息到来。 ### 步骤五测试和运行 1. 启动消费者程序在一个终端中。 2. 启动生产者程序在另一个终端中。生产者会向队列发送一条消息。 3. 消费者会自动收到并处理消息。 遇到错误如下 {timestamp:2024-12-09T15:42:10.65708:00,caller:mq/consumer.go:55,content:Dial: Exception (403) Reason: \no access to this vhost\,level:error} {timestamp:2024-12-09T15:42:10.65708:00,caller:mq/consumer.go:37,content:Consumer encountered an error and needs to be restarted, error: Exception (403) Reason: \no access to this vhost\,level:error} 原因:主账号购买的服务,子账号创建的mq用户,没有授权给子账号的mq控制台管理权限 错入如下 {timestamp:2024-12-09T17:56:39.87008:00,caller:mq/consumer.go:74,content:Exchange Declare: Exception (406) Reason: \ExchangeInBuilt[amq.topic], ReqId:6756BED74138333200852364, ErrorHelp[exchangeamq.topic, https://c.tb.cn/F3.Zro5uI]\,level:error} {timestamp:2024-12-09T17:56:39.87008:00,caller:mq/consumer.go:37,content:Consumer encountered an error and needs to be restarted, error: Exception (406) Reason: \ExchangeInBuilt[amq.topic], ReqId:6756BED74138333200852364, ErrorHelp[exchangeamq.topic} 错误原因:官方默认的交换机 amq.topic 是 RabbitMQ 的内置交换机不能重新声明。需要修改消配置的定义新的交换机go-amp.topic跳过系统交换机声明的步骤。 ### 注意事项 - 确保你的阿里云 MQ 服务已经开启并且配置了正确的接入点、密钥和虚拟主机。 - 可以根据需求选择是否启用持久化、自动确认等选项。 - 在生产环境中确保对消息队列进行有效的监控和错误处理以保证系统的稳定性和可靠性。 通过这种方式你就可以在 Go 语言中对接阿里云的消息队列MQ并实现与 RabbitMQ 的基本交互。
http://www.hkea.cn/news/14382839/

相关文章:

  • 成都科技网站建设电话咨询网页设计图片排版代码
  • 怎么用ps做网站首页图片尺寸株洲有名的网站
  • wordpress 同步qq空间seo入门教程网盘
  • 做网站公司选哪家seo优化的网站
  • 0基础网站建设教程视频教程网站建设的过程有哪些
  • 教做面点的网站南宁电商网站建设
  • 福建注册建设中心网站产品50个关键词
  • 专业手机网站建设关于公司网站建设的申请
  • 深圳企业建网站怎样把自己做的网站发布
  • 长沙网站建设哪家强企业培训师资格证报考官网入口
  • 杭州北京网站建设公司哪家好海西高端网站建设公司
  • h5手机制作网站开发叶文语 厦门建设局
  • 软件培训网站建设上海中学排名
  • 网站建设保报价文档公司网站名词解释
  • 内蒙古建设厅网站建设工程教育网论坛官网
  • 自己做的影视网站买会员违法吗运营型网站
  • 网站改版升级17网一起做网店普宁
  • 酒店网站建设范文su域名注册
  • 网页制作教程第二版北京seo网站开发
  • 网站制作广免费网站建站下载
  • 中国建筑网官网登录太原seo代理
  • 广州设计网站培训班asp网站浏览器兼容
  • 海南做网站的公司中国兰州网首页
  • 北京外贸网站建设公司一流的镇江网站优化
  • 个体工商户经营范围做网站微信小程序怎么制作网页
  • 关于网站开发相关法律条款上海网站建设费用多少钱
  • 北京网站建设案例定制开发软件产品的税率
  • 网站后台管理系统域名专门做灯具海报的网站
  • 塑胶原料东莞网站建设技术支持网站推广流程
  • 广西建设厅官网站首页做网站 对方传销