![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
消息队列
消息队列中间件 MQ
来深圳
在校大学生
展开
-
RabbitMQ 延迟队列 Golang
使用场景订单在十分钟之内未支付则自动取消新建店铺,如果在十天内都没有上传商品,则自动发送消息提醒用户注册成功后,如果三天内没有登录则进行短信提醒插件RabbitMQ实现延迟队列需要使用插件# 查看插件rabbitmq-plugins list# 复制插件到容器docker cp 插件名 容器id:/plugins# 启用插件rabbitmq-plugins enable rabbitmq_delayed_message_exchange消息在ttl之后才会进入队列,进入队列原创 2022-04-28 00:02:52 · 1669 阅读 · 0 评论 -
RabbitMQ之死信队列
死信队列:死信队列用于处理无法被正常消费的消息。一条消息初次消费失败会被重试消费,若重试次数达到最大值(默认16次,在客户端可配置)时,依然消费失败,则其将被投递到该消费者对应的特殊队列(即死信队列)中,这种消息被称为死信消息。应用场景:为了保证订单业务的消息数据不丢失,需要使用到RabbitMQ的死信队列机制,当消息出现异常时,将消息投入死信队列中。用户商城下单成功点击去支付后在指定时间内未支付时自动失效死信的原因:消息TTL过期队列达到最大长度,即队列已满消息被拒,并且不放回实战原创 2022-04-25 23:32:24 · 1722 阅读 · 0 评论 -
RabbitMQ之Topics
Topics主题模式是在Routing模式基础上提供了对RouteKey模糊匹配的功能,可以简化程序的编写主题模式下,模糊匹配表达式规则为:*匹配单个关键字# 匹配搜友关键字主题模式使用的交换机类型为topic发送到topic exchange的消息不能有任意的路由键 - 它必须是一个单词列表,由点分隔。这些词可以是任何东西,但通常它们指定与消息相关的一些特征。路由键中可以有任意多的单词,最多为 255 个字节。消费者代码package mainimport ( "log" "原创 2022-04-19 20:41:22 · 378 阅读 · 0 评论 -
RabbitMQ之路由模式
routing发布订阅模式是无条件的将所有消息发送给所有绑定队列路由模式则是根据Routing Key有条件的将数据筛选后发送给消费者路由模式使用的交换机的类型为directdirect exchange背后的路由算法很简单——消息进入绑定键与消息的路由键完全匹配的队列。使用相同的绑定键绑定多个队列是完全合法的。生产者package mainimport ( "log" "os" "rabbit/utils" "strings" "github.com/streadway/原创 2022-04-19 19:33:49 · 1588 阅读 · 0 评论 -
RabbitMQ 之发布订阅模式
publish/subscribe发布订阅模式中,生产者不再直接与队列绑定,而是将数据发送至交换机Exchange交换机Exchange用于将数据按某种规则送入与之绑定的队列,进而供消费者使用。发布订阅模式中,交换机将无差别的将所有消息送入与之绑定的队列,所有消费者拿到的消息完全相同,交换机的类型为fanoutexchange的类型有directtopicheadersfanout生产者package mainimport ( "log" "os" "rabbit/uti原创 2022-04-19 18:39:06 · 1778 阅读 · 0 评论 -
RabbitMQ之work queue
work queue主要思想: 避免立即执行资源密集型任务,而不得不等待它完成。安排任务在之后执行,我们将任务封装为消息并放送到队列。而后台的工作进程从消息队列中读取消息并执行任务。当有多个工作线程时,这些线程将一起处理这些任务。这个概念在 Web 应用程序中特别有用,在这些应用程序中,无法在短暂的 HTTP 请求窗口中处理复杂的任务。work queue适合在集群环境中做异步处理,能最大程度发挥每一台服务器的性能生产者代码, 简单的往队列发送20条消息package mainimport原创 2022-04-19 17:45:59 · 521 阅读 · 0 评论 -
RabbitMQ 常用命令
# 前台启动服务rabbitmq-server# 后台启动服务rabbitmq-server -detached# 停止服务rabbitmqctl stop# 终止应用rabbitmqctl stop_app# 启动应用rabbitmqctl start_app用户管理# 当前用户和角色root@42c7b53e0ca1:/# rabbitmqctl list_usersListing users ...user tagsadmin [administrator]原创 2022-04-19 12:49:54 · 597 阅读 · 0 评论 -
RabbitMQ HelloWorld
1. hello world生成者代码package mainimport ( "github.com/streadway/amqp" "log")func failOnError(err error, msg string) { if err != nil { log.Fatalf("%s: %s", msg, err) }}func main() { conn, err := amqp.Dial("amqp://admin:admin@localhost:5672/")原创 2022-04-19 09:15:49 · 66 阅读 · 0 评论