![](https://img-blog.csdnimg.cn/20200817181533523.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
RabbitMq
RabbitMQ是一个消息代理。它的工作就是接收和转发消息。
zhen24
有梦想的咸鱼
展开
-
RabbitMQ消费将消息放回队列
一,背景 问题: 正式环境RabbitMQ开了三个线程消费消息,导致数据被重复创建,消费几乎是同一时刻消费的. 解决: 在Redis中加锁,判断锁是否存在,如果存在将消息重新放回队列之中. 二,代码实现 import datetime import json import collections import pika class Mq_custom(object): def __init__(self, queue_name='', exchange='', exchange.原创 2020-12-23 16:01:51 · 1607 阅读 · 2 评论 -
RabbitMQ 死信+延迟队列
前菜 死信消息: 消息被拒绝(Basic.Reject或Basic.Nack)并且设置 requeue 参数的值为 false 消息过期了 队列达到最大的长度 过期消息: 在 rabbitmq 中存在2种方可设置消息的过期时间,第一种通过对队列进行设置,这种设置后,该队列中所有的消息都存在相同的过期时间,第二种通过对消息本身进行设置,那么每条消息的过期时间都不一样。如果同时使用这2种方法,那么以过期时间小的那个数值为准。当消息达到过期时间还没有被消费,那么那个消息就成为...原创 2020-08-19 20:19:43 · 301 阅读 · 0 评论 -
RabbitMQ 生产环境类
一. RabbitMq公共方法类 import datetime class RabbitMQ(object): '''rabbitmq 公共配置''' def __init__(self, queue_name='', exchange='', exchange_type='', routing_key=''): self.connection = self.get_connection() # 队列名字 self.queue_nam原创 2020-08-19 14:56:14 · 184 阅读 · 0 评论 -
RabbitMQ 发布-订阅之消息过滤进阶
背景 由于直连交换机只能精确匹配,无法匹配以什么开头,为中间字符或者结尾的消息,为了解决这一问题我们引入主题交换机. 主题交换机 发送到主题交换机(topic exchange)的消息不可以携带随意什么样子的路由键(routing_key),它的路由键必须是一个由.分隔开的词语列表。这些单词随便是什么都可以,但是最好是跟携带它们的消息有关系的词汇。以下是几个推荐的例子:"stock.usd.nyse", "nyse.vmw", "quick.orange.rabbit"。 *(星号) 用来表示一个单.翻译 2020-08-18 13:50:01 · 479 阅读 · 0 评论 -
RabbitMQ 发布-订阅之消息过滤
背景 我们将会使用直连交换机(direct exchange)来代替。路由的算法很简单 —— 交换机将会对绑定键(binding key)和路由键(routing key)进行精确匹配,从而确定消息该分发到哪个队列。 下图能够很好的描述这个场景: 在这个场景中,我们可以看到直连交换机 X和两个队列进行了绑定。第一个队列使用orange作为绑定键,第二个队列有两个绑定,一个使用black作为绑定键,另外一个使用green。 这样以来,当路由键为orange的消息发布到交换机,就会被路由到队列Q1。翻译 2020-08-18 11:11:49 · 869 阅读 · 0 评论 -
RabbitMQ 发布-订阅
背景 将日志消息广播给所有订阅者(常用于博主,抖音,微博等订阅). 实战 一.生产者 #utf-8 import pika import sys connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost')) channel = connection.channel() channel.exchange_declare(exchange='logs',转载 2020-08-17 19:10:21 · 88 阅读 · 0 评论