go+redis实现消息队列发布与订阅的详细过程_golang_脚本之家


本站和网页 https://www.jb51.net/article/262944.htm 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。


go+redis实现消息队列发布与订阅的详细过程_Golang_脚本之家
脚本之家
服务器常用软件
手机版
关注微信
快捷导航
软件下载
android
MAC
驱动下载
字体下载
DLL
源码下载
PHP
ASP.NET
ASP
JSP
软件编程
C#
JAVA
C 语言
Delphi
Android
网络编程
JavaScript
在线工具
CSS格式化
JS格式化
Html转化为Js
数据库
MYSQL
MSSQL
oracle
DB2
MARIADB
CMS
PHPCMS
DEDECMS
帝国CMS
WordPress
常用工具
PHP开发工具
python
Photoshop
必备软件
网站首页
网页制作
脚本专栏
脚本下载
服务器
电子书籍
操作系统
网站运营
平面设计
其它
媒体动画
电脑基础
硬件教程
网络安全
vbs
DOS/BAT
hta
htc
perl
游戏相关
VBA
远程脚本
ColdFusion
ruby
autoit
seraphzone
PowerShell
linux shell
Lua
Golang
Erlang
您的位置:
首页
→ go redis消息队列
go+redis实现消息队列发布与订阅的详细过程
 更新时间:2022年09月17日 13:46:11   作者:升级打怪  
这篇文章主要介绍了go+redis实现消息队列发布与订阅,redis做消息队列的缺点:没有持久化,一旦消息没有人消费,积累到一定程度后就会丢失,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
在做项目过程中,实现websocket得时候,不知道哪里写的不太合适,客户端消息收到一定程度,剩下的消息收不到,修改了缓冲区大小,还是没有解决问题,后面因为项目结束期比较紧张,没有时间调试消息的时候,改用了redis队列去做了消息得暂存,客户端轮询去拿对应的消息。
1.生产者随机发布消息,用rpush发布。
2.消费者用lpop订阅消费,一旦没有消息,随机休眠。
redis做消息队列的缺点:没有持久化。一旦消息没有人消费,积累到一定程度后就会丢失
package main
import (
"fmt"
"time"
"os"
"strconv"
"math/rand"
"github.com/gomodule/redigo/redis"
const RMQ string = "mqtest"
func producer() {
redis_conn, err := redis.Dial("tcp", "127.0.0.1:6379", redis.DialPassword("hdiot"))
if err != nil {
fmt.Println(err)
return
defer redis_conn.Close()
rand.Seed(time.Now().UnixNano())
var i = 1
for {
_,err = redis_conn.Do("rpush", RMQ, strconv.Itoa(i))
if(err!=nil) {
fmt.Println("produce error")
continue
fmt.Println("produce element:%d", i)
time.Sleep(time.Duration(rand.Intn(10))*time.Second)
i++
func consumer() {
ele,err := redis.String(redis_conn.Do("lpop", RMQ))
if(err != nil) {
fmt.Println("no msg.sleep now")
} else {
fmt.Println("cosume element:%s", ele)
func main() {
list := os.Args
if(list[1] == "pro") {
go producer()
} else if (list[1] == "con") {
go consumer()
time.Sleep(time.Duration(10000)*time.Second)
到此这篇关于go+redis实现消息队列发布与订阅的详细过程的文章就介绍到这了,更多相关go redis消息队列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
golang实现redis的延时消息队列功能示例
Golang中优秀的消息队列NSQ基础安装及使用详解
使用go实现一个超级mini的消息队列的示例代码
关于golang监听rabbitmq消息队列任务断线自动重连接的问题
go带缓冲chan实现消息队列功能
Go操作各大消息队列教程(RabbitMQ、Kafka)
go
redis
消息队列
相关文章
详解Go语言中调度器的原理与使用
这篇文章主要介绍了Go语言运行时调度器的实现原理,其中包含调度器的设计与实现原理、演变过程以及与运行时调度相关的数据结构,希望对大家有所帮助
2023-07-07
golang微服务框架kratos实现Socket.IO服务的方法
本文主要介绍了golang微服务框架kratos实现Socket.IO服务的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-06-06
详解Go函数和方法之间有什么区别
这篇文章就简单和大家聊一聊在Go中函数与方法之间的区别,文章通过代码示例介绍的非常详细,对我们的学习或工作有一定的帮助,感兴趣的小伙伴跟着小编一起来看看吧
解决go echo后端处理跨域的两种操作方式
这篇文章主要介绍了解决go echo后端处理跨域的两种操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
2020-12-12
详解Go语言中Goroutine退出机制的原理及使用
goroutine是Go语言提供的语言级别的轻量级线程,在我们需要使用并发时,我们只需要通过 go 关键字来开启 goroutine 即可。本文就来详细讲讲Goroutine退出机制的原理及使用,感兴趣的可以了解一下
2022-07-07
手把手带你走进Go语言之运算符解析
这篇文章主要介绍了手Go语言之运算符解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2021-09-09
golang http使用踩过的坑与应对方式
这篇文章主要介绍了golang http使用踩过的坑与应对方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
2024-01-01
Golang中数据结构Queue的实现方法详解
这篇文章主要给大家介绍了关于Golang中数据结构Queue的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
2017-09-09
Mac下Vs code配置Go语言环境的详细过程
这篇文章给大家介绍Mac下Vs code配置Go语言环境的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
2021-07-07
golang 实现json类型不确定时的转换
这篇文章主要介绍了golang 实现json类型不确定时的转换操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
2021-01-01
最新评论
大家感兴趣的内容
Goland激活码破解永久版及安装详细教程(亲测可以)
Go语言string,int,int64 ,float之间类
Go语言中的Array、Slice、Map和Set使用详解
Go语言的GOPATH与工作目录详解
Go语言转换所有字符串为大写或者小写的方法
Go语言interface详解
五步让你成为GO 语言高手
Go语言命令行操作命令详细介绍
Go语言编程中字符串切割方法小结
10
我放弃Python转Go语言的9大理由(附优秀书籍推荐)
最近更新的内容
go的defer和闭包示例说明(非内部实现)
GoLang unsafe包详细讲解
Go语言的Channel遍历方法详解
Go语言中获取IP地址的方法详解
Golang中的内存泄漏你真的理解了吗
Golang加密解密之RSA(附带php)
Go 常见设计模式之单例模式详解
利用Go语言实现Raft日志同步
go语言中http超时引发的事故解决
Go语言基本的语法和内置数据类型初探
常用在线小工具
关于我们
广告合作
联系我们
免责声明
网站地图
投诉建议
在线投稿
©CopyRight 2006-2024 JB51.Net Inc All Rights Reserved. 脚本之家 版权所有