使用Python Pika 操作 Rabbitmq 完成(延时队列,死信队列)

封装的RabbitmqClient对象

#!/usr/bin/env python

import pika
import logging


class RabbitMQClient:
    def __init__(self, conn_str='amqp://guest:[email protected]:5672/Authorization/'):
        self.exchange_type = "topic"  # 特定的路由键完全匹配,会推送到指定的队列上
        self.connection = pika.BlockingConnection(pika.URLParameters(conn_str))
        self.channel = self.connection.channel()
        self._declare_retry_queue()
        logging.debug("Rabbitmq队列连接成功")

    def _declare_retry_queue(self):
        """
        创建异常交换器和队列,用于存放没有正常处理的消息。
        :return:
        """
        self.channel.exchange_declare(exchange='RetryExchange',
                                      exchange_type='fanout',
                                      durable=True)
        self.channel.queue_declare(queue='RetryQueue',
                                   durable=True)
        # 绑定队列到指定的交换机
        self.channel.queue_bind('RetryQueue', 'RetryExchange', 'RetryQueue')

    def declare_exchange(
            self,
            exchange=None,  # 交换机的名字,为空则自动创建一个名字
            exchange_type='',  # 默认交换机类型为direct
            passive=False,  # 检查交换机是否存在,存在返回状态信息,不存在返回404错误
            durable=False,  # 设置是否持久化)
            auto_delete=False,  # 最后一个队列解绑则删除
            internal=False,  # 是否设置为值接收从其他交换机发送过来的消息,不接收生产者的消息
            arguments=None):  # 一个字典,用于传递额外的参数

        self.channel.exchange_declare(exchange=exchange,
                                      exchange_type=exchange_type if exchange_type else self.exchange_type,
                                      durable=True)

    def declare_queue(
            self,
            queue='',  # 队列的名字,默认为空,此时将自动创建一个名字,
            passive=False,  # 检查一下队列是否存在,如果该参数为True,该方法判断队列存在否,不会声明队列;存在返回queue的状态,不存在报错
            durable=False,  # 队列持久化参数,默认不持久化
            exclusive=False,  #
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值