连接rabbitmq的代码

消费者断线重连:

package main

import (

"log"

"github.com/streadway/amqp"

"database/sql"

_"github.com/go-sql-driver/mysql"

//"time"

)

func insert(db *sql.DB, a []byte) {

stmt, err := db.Prepare("INSERT INTO rabbit (name) VALUES(?)")

stmt.Exec(a)

defer stmt.Close()

if err != nil {

log.Println(err)

return

}

}

func failOnError(err error, msg string) {

if err != nil {

log.Fatalf("%s: %s", msg, err)

}

}

func main() {

//打开mysql

db, err := sql.Open("mysql", "root:0022....hh@tcp(127.0.0.1:3306)/rabbitmq?charset=utf8")

if err != nil {

log.Fatalf("Open database error: %s\n", err)

}

defer db.Close()

err = db.Ping()

if err != nil {

log.Fatal(err)

}

//forever := make(chan bool)

//连接rabbitmq

for {

conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")

if err != nil {

continue

}

failOnError(err, "Failed to connect to RabbitMQ")

defer conn.Close()

ch, err := conn.Channel()

failOnError(err, "Failed to open a channel")

defer ch.Close()

q, err := ch.QueueDeclare(

"hello", // name

true, // durable

false, // delete when unused

false, // exclusive

false, // no-wait

nil, // arguments

)

failOnError(err, "Failed to declare a queue")

// 创建消费者

msgs, err := ch.Consume(

q.Name, // queue

"", // consumer

true, // auto-ack

false, // exclusive

false, // no-local

false, // no-wait

nil, // args

)

failOnError(err, "Failed to register a consumer")

// 协程获取消息队列处理结果

go func() {

for d := range msgs {

log.Printf("Received a message: %s", d.Body)

insert(db, d.Body)

}

}()

if conn != nil {

//time.Sleep(50*time.Second)

continue

}

log.Printf(" [*] Waiting for messages. To exit press CTRL+C")

//

}

}

有疑问加站长微信联系(非本文作者))

golang mysql自动重连_rabbitmq消费者插入mysql数据并实现断线自动重连相关推荐

  1. 完整MySQL入门指令练习,有插入表格数据

    完整MySQL入门指令练习,有插入表格数据 欢迎关注微.信公众号:软件集合 // 完整MySQL入门训练,有插入数据 -- <01 mysql数据库的操作> -- 连接数据库mysql - ...

  2. mysql的一个字段最多能插入多少数据?我们存入text类型的值上限是多大?

    文章目录 一.前言 二.mysql的行大小限制 1.结论如下 2.行大小限制 3.页大小设置以及特性 (1)查看当前数据页大小 (2)关于数据页的解释 4.text类型和blob类型的特殊之处 5.t ...

  3. mysql输入中文出现 号_MySQL插入中文数据出现?号

    运行环境:win10 mysql版本:Mysql5.6 做一个项目的时候,向数据库插入中文数据,一直都是? 问过度娘之后,她提供的以下办法: 1.在连接数据库的url后加:?useUnicode=tr ...

  4. mysql 存储过程 脚本_mysql利用存储过程插入大量数据脚本

    1.检查是否开启二进制日志 #查看是否开启二进制日志,ON表示开启,OFF表示没有开启 show variables like'log_bin_trust_function_creators'; #若 ...

  5. java 插入 mysql 乱码_解决java中插入mysql中文乱码的方法

    解决java中插入mysql中文乱码的方法 发布时间:2020-07-11 14:35:11 来源:亿速云 阅读:100 作者:清晨 这篇文章主要介绍解决java中插入mysql中文乱码的方法,文中介 ...

  6. 【带移动搜索功能】织梦dedecms手机WAP插件专业版 织梦自动建手机WAP站 PC+WAP数据同步更新 访问自动跳转

    安装步数: ( 插件及高清视频教程:QQ  86862635 或www.wlyx158.com 搜索 织梦自动建手机WAP站 PC+WAP数据同步更新) 1. 检查数据表的前缀是不是dede_   ( ...

  7. jsp获取当前时间存入mysql数据库_jsp获取当前时间插入Mysql数据库?

    匿名用户 1级 2013-05-27 回答 展开全部 MySQL 中,默认值无法使用函数 也就是你无法 设置某一列,默认值是 NOW () 这样的处理 假如需要 某列的默认值为 当前数据库时间,那么可 ...

  8. 命令行输入mysql不行_MySQL命令行无法插入中文数据

    下面的方法是针对window系统的 注意: 1  下面的my.ini文件在有些版本的Mysql中的安装目录找不到,比如我用的版本5.5.60-log就找不到,想要找到这个文件,需要设置显示window ...

  9. created at mysql类型_MySQL created_at 日期时间字段在数据变更时,自动更新

    今天在使用 GoAdmin 开发后台功能时,发现 GoAdmin 没有像 Laravel 那样自带 created_at 字段更新功能.即数据发送变化时,无法自动更新 created_at 字段. 而 ...

最新文章

  1. [转]asp.net权限认证:HTTP基本认证(http basic)
  2. Quartus调用Modelsim SE避免重复编译Altera器件库的方法
  3. 首发:一份国内机器学习爱好者的性别比例的抽样调查
  4. PHP中用于精确计算的bcmath扩展
  5. DelayQueue详解
  6. stm32单片机屏幕一直闪_STM32使用HAL库函数点亮OLED
  7. js变量提升_学习笔记:JS中的作用域和预解析
  8. 谁还没个黑历史了。。。 | 今日最佳
  9. P3911 最小公倍数之和 (atcoder C - LCMs)(反演)
  10. 编程语言性能实测,Go 比 Python 更胜一筹?
  11. 12个职场信条让你的工作不可替代
  12. shell编程之函数简单使用
  13. [改善Java代码]边界,边界,还是边界
  14. 单机数据库优化的一些实践
  15. html5效果案例,10个优秀HTML5网站案例赏析
  16. 如何减小电压跟随器输出电阻_电压跟随器只会跟踪?不!请看看它对电路的“魔力”。...
  17. 哪个云计算认证好?从市场角度浅析一下
  18. win7 升级到 win10 补丁
  19. PMP知识点总结—质量功能展开(QFD)
  20. 杨百翰大学计算机科学,杨百翰大学

热门文章

  1. linux make menuconfig 快速查找
  2. python项目打包
  3. 一句话后门中eval和assert的区别
  4. php中curl的详解
  5. 使用WinCrypt进行简单的对称加密实例
  6. Win32 API之Setlocale函数配置地域化信息函数
  7. Android中实现双击屏幕跳转
  8. Android中的事件处理机制
  9. spark Tachyon
  10. kingcms php 下载,KingCMS _KingCMS官方网站