• pika详解(四) channel 通道


    pika详解(四) channel 通道

    channel通道

    通道是在connection建立后进行创建分配的,有利于connection重用

    官方建议通过connection的channel() 方法进行创建

    方法/参数:

    1. add_callback(callback, replies, one_shot=True)

      从 RabbitMQ broker 收到消息,在回复列表中,则调用回调函数,为replies列表添加回调函数

      参数:
      callback (callable)– 回调函数
      replies (list) –callback 回调列表
      one_shot (bool) – 只处理第一种类型的回调

    2. add_on_cancel_callback(callback)

      服务器发送basic_cancel时调用的回调函数

    3. add_on_close_callback(callback)

      通道关闭时调用的回调函数

    4. add_on_flow_callback(callback)

      远程服务器调用Channel.Flow时调用的回调函数

    5. add_on_return_callback(callback)

      basic_publish发送一条已被服务器拒绝并返回的消息时调用

    6. basic_ack(delivery_tag=0, multiple=False)
      参数:

      delivery_tag (整数) – 服务器分配的传递标记

      multiple 布尔值, 是否允许确认多条

    7. basic_cancel(consumer_tag='', callback=None)

      取消一个consumer, 不影响delivered 已经发送的消息,但这意味着rabbitmq broker不再向该consumer发送消息

      consumer_tag 消费者的标识符

    8. basic_consume(queue, on_message_callback, auto_ack=False, exclusive=False, consumer_tag=None, arguments=None, callback=None)
      参数:
      queue (str) – 队列名称
      on_message_callback (callable) –回调函数, 回调的定义on_message_callback(channel, method, properties, body)
      auto_ack (bool)–是否自动确认, 默认不自动确认消息
      exclusive (bool)– 排他队列, 是否允许在队列中允许还有其他的consumer消费者
      consumer_tag (str)– consumer的标志符
      arguments (dict) – 消费者的自定义键/值对参数
      callback (callable)– callback(pika.frame.Method) for method Basic.ConsumeOk.

    9. basic_get(queue, callback, auto_ack=False)

      获取单条消息

      参数:
      queue (str)– 队列名称
      callback (callable)–回调函数, 回调定义callback(channel, method, properties, body),
      auto_ack (bool)– 自动消息确认

    10. basic_nack(delivery_tag=None, multiple=False, requeue=True)

      允许客户端拒绝一个或多个传入消息。它可用于中断和取消大量传入消息,或将无法处理的消息返回到其原始队列

      参数:
      delivery-tag (integer) – int/long 服务器分配的 delivery id
      multiple (bool) –是否允许多条
      requeue (bool) – 如果requeue为true,服务器将尝试重新排队该消息。如果requeue为false或重新排队尝试失败,则丢弃或删除消息

    11. basic_publish(exchange, routing_key, body, properties=None, mandatory=False)

      发送消息

      参数:

      exchange (str)– 交换机名称
      routing_key (str) – 路由键, 与交换机类型有关, topic 可以使用匹配规则, direct 则需要指定准确的路由键, 否则消息会被丢弃,或者返回给consumer, fanout则可以使用空字符"", 广播到交换机下的队列
      body (bytes) – 消息内容
      properties (pika.spec.BasicProperties) – Basic.properties 消息属性
      mandatory (bool) – 强制性标志, 设置broker对于没有投递成功消息的处理机制:

      如果exchange根据自身类型和消息routingKey无法找到一个合适的queue存储消息,
      那么broker会调用basic.return方法将消息返还给生产者;当mandatory设置为false时,
      出现上述情况broker会直接将消息丢弃

    12. basic_qos(prefetch_size=0, prefetch_count=0, global_qos=False, callback=None)

    参数:

    • prefetch_size - 该字段指定预取窗口大小。如果服务器的大小等于或小于可用的预取大小(并且也属于其他预取限制),则它将提前发送消息。可以设置为零,意味着“没有特定限制”,尽管其他预取限制可能仍然适用。启用no-ack选项的使用者将忽略prefetch-size。

    • prefetch_count- 根据整个消息指定预取窗口。该字段可以与预取大小字段结合使用; 如果预取窗口(以及通道和连接级别的窗口)都允许,则只会提前发送消息。启用no-ack选项的使用者将忽略prefetch-count。

    • global_qos - QoS是否适用于频道上的所有消费者

    • callbackcallable) - 调用Basic.QosOk响应的回调

    1. basic_reject(delivery_tag, requeue=True)

      拒绝传入的消息。此方法允许客户端拒绝消息。它可用于中断和取消大量传入消息,或将无法处理的消息返回到其原始队列参数:
      delivery-tag (integer)– 分配的tag
      requeue (bool)–如果requeue为true,服务器将尝试重新排队该消息。如果requeue为false或重新排队尝试失败,则丢弃或删除消息

    2. basic_recover(requeue=False, callback=None)

      要求服务器重新传送指定通道上的所有未确认消息,可以重新传递零个或多个消息

    3. close(reply_code=0, reply_text='Normal shutdown')

    关闭
     
    • 1
    1. confirm_delivery(ack_nack_callback, callback=None)
    开启通道 中的确认模式, 当consumer接收或者拒绝消息的时候会调用
     
    • 1
    1. consumer_tags

      返回当前活动使用者列表的属性方法

    2. exchange_bind(destination, source, routing_key='', arguments=None, callback=None)

    交换机绑定, 将一个交换机绑定到另外一个交换机
    
    参数:
    
    `destination`(str) - 要绑定的目标交换
    `source(str)` - 要绑定的源交换
    `routing_key`(str) - 要绑定的路由键
    `arguments`(dict) - 绑定的自定义键/值对参数
    `callback`(callable) - 方法Exchange.BindOk的回调(pika.frame.Method)
     

     

    1. exchange_declare(exchange, exchange_type='direct', passive=False, durable=False, auto_delete=False, internal=False, arguments=None, callback=None)

    声明交换机

    参数:
    exchange(str) – 交换机名称
    exchange_type (str) – 交换机类型, 一般使用topic(主题交换机), direct, fanout(广播交换机)
    passive (bool) – 执行检察或者只是检察是否存在, 默认为false, 即是,如果不存在则会创建交换机
    durable (bool) – 是否持久化,决定了在rabbitmq重启后该交换机是否存在
    auto_delete (bool) –自动删除
    internal (bool)– 内部,只能由其他exchanges进行发布
    arguments (dict)– 交换的自定义键/值对参数
    callback (callable)– 方法Exchange.DeclareOk的回调(pika.frame.Method)

    1. exchange_delete(exchange=None, if_unused=False, callback=None)

      删除交换机

      参数:
      exchange (str) – 交换机删除
      if_unused (bool) – 在没有使用时删除
      callback (callable)–Exchange.DeleteOk 消息的回调

    2. exchange_unbind(destination=None, source=None, routing_key='', arguments=None, callback=None)

    取消与另一个交换机的绑定

    参数:

    • destination - 取消绑定的目标交换
    • source - 取消绑定的源交换
    • routing_key - 解除绑定的路由键
    • arguments - 绑定的自定义键/值对参数
    • callbackcallable) - 方法Exchange.UnbindOk的回调(pika.frame.Method)
    1. flow(active, callback=None)

    关闭和打开通道流量控制

    参数:
    active (bool)– Turn flow on or off
    callback (callable)– callback(bool) upon completion

    1. is_closed
    2. is_closing
    3. is_open
    4. open()
    5. queue_bind(queue, exchange, routing_key=None, arguments=None, callback=None)

    将队列绑定到交换机

    参数:
    queue(str) - 绑定到交换的队列
    exchange(str) - 要绑定的源交换
    routing_key(str) - 要绑定的路由键
    arguments(dict) - 绑定的自定义键/值对参数
    callback(callable) - 方法Queue.BindOk的回调(pika.frame.Method)

    1. queue_declare(queue, passive=False, durable=False, exclusive=False, auto_delete=False, arguments=None, callback=None)
    声明队列
    
    参数:
    `queue (str)` – 队列名称
    `passive (bool) `– 只检察队列是否存在,默认false
    `durable (bool)` – 是否持久化队列,以便在重启rabbitmq时候队列能够恢复
    `exclusive (bool)` – 排他队列,只允许在该连接connection中使用
    `auto_delete (bool) `– 断开连接时候是否自动删除
    `arguments (dict) `–  队列的自定义键/值参数
    `callback (callable)` – 方法Queue.DeclareOk的回调(pika.frame.Method)
     

     

    1. queue_delete(queue, if_unused=False, if_empty=False, callback=None)
    删除队列
    
    参数:
    `queue (str)` – 队列名称
    `if_unused (bool)` – 未使用才删除
    `if_empty (bool)` – 是否是空的时候才删除
    `callback (callable)` –方法Queue.DeleteOk的回调(pika.frame.Method)
     

     

    1. queue_purge(queue, callback=None)

      清除队列的所有消息

      queue (str) –队列名称
      callback (callable) – 方法Queue.PurgeOk的回调(pika.frame.Method)

    2. queue_unbind(queue, exchange=None, routing_key=None, arguments=None, callback=None)

      解除队列绑定

      queue (str)– 队列名称
      exchange (str) – 交换机名称
      routing_key (str) – 路由键
      arguments (dict)– 绑定的自定义键/值对参数
      callback (callable) – 方法Queue.UnbindOk的回调(pika.frame.Method)

    3. tx_rollback(callback=None)

    4. tx_select(callback=None)

    5. tx_rollback(callback = None)

     
  • 相关阅读:
    linux安装python3.6以后报错处理
    cent07设置服务开机自启
    python进程和线程中的两个锁
    针对Material主题怎么修改 phpstorm 代码编辑器的样式
    CentOS中zip工具的基本使用
    Anaconda退出Base环境
    微擎用户自动回复对应的链接、控制器、模板
    微擎应用模块中的参数设置对应的前端页面
    微擎设置借用权限
    微擎分配不同的用户具有不同应用的操作权限
  • 原文地址:https://www.cnblogs.com/xiao-xue-di/p/13856746.html
Copyright © 2020-2023  润新知