首页 > 编程语言 >Python--pika (rabbitmq)

Python--pika (rabbitmq)

时间:2025-01-04 11:33:59浏览次数:1  
标签:pika exchange Python xxx queue -- routing key channel

connection

connection = BlockingConnection(ConnectionParameters(host='xxx', port=xxx, 
                                credentials=PlainCredentials(username='xxx', password='xxx')))

channel

  • channel = connection.channel()
  • 生产和消费动作基本上是通过channel进行操作
    • channel.exchange_declare
    • channel.queue_declare
    • channel.basic_publish
    • channel.queue_bind
    • channel.basic_qos
    • channel.basic_sonsume
    • channel.start_consuming
    • channel.basic_ack
    • channel.basic_rejec
    • channel.basic_nack

publisher

  • channel.basic_publish(exchange='xxx', routing_key='xxx')
    • '': 没有指定exchange时,走的是默认的exchange,会绑定所有的queue,routing_key为queue的名称
  • channel.exchange_declare(exhange='xxx', exchange_type='xxx')

exchange

  • exchange_type
    • fanout
      • 发布的消息都会被传到exchange绑定的每一个queue上,忽略routing_key
    • direct
      • exhange根据消息的routing_key,把消息传到绑定了对应routing_key的queue中
      • 不同queue可以绑定同一个routing_key, 这样可以实现fanout效果
    • topic
    • queue绑定的routing_key可以包含多个词,词之间用.间隔
    • 可以使用#和,#表示0个或多个词,表示正好1个词
    • exchange会把消息的routing_key与各queue中的routing_key进行匹配,只把消息传递到匹配上的queue

queue

  • result = channel.queue_declare(queue_name, exclusive=True, arguments={xxx})
    • 如果queue的名称是空字符串'',则会自动生成一个名称,可以通过result.method.queue获取
    • exclusive: connection关闭后,queue会自动删除
    • arguments:
      • 'x-single-active_consumer': True 单活客户端,即只有一个活跃的客户端可以消费queue中的消息
  • channel.queue_bind(exchange='xxx', queue='xxx', routing_key='xxx')
    • 如果routing_key为None,则绑定的routing_key就是queue的名称
  • channel.start_consuming 启动消费

consumer

  • channel.basic_qos(prefetch_count=1)
    • prefetch_count: 指定queue中最多有多少个没有ack的消息,如果达到了这个数量,就不在投递消息到consumer
  • channel.basic_consume(queue='queue_name', on_message_callback=callback_func, auto_ack=False)
    • queue: 指定消费的queue
    • on_message_callback: 指定消费消息的函数

标签:pika,exchange,Python,xxx,queue,--,routing,key,channel
From: https://www.cnblogs.com/yarightok/p/18651710

相关文章

  • RAG实战:本地部署ragflow+ollama(linux)
    1.部署ragflow1.1安装配置docker因为ragflow需要诸如elasticsearch、mysql、redis等一系列三方依赖,所以用docker是最简便的方法。docker安装可参考Linux安装Docker完整教程,安装后修改docker配置如下:vim/etc/docker/daemon.json{"builder":{"gc":{"defau......
  • vscode下载vetur和vue-helper插件之后删除键(backspace)失效
    最近我在学习前端的过程中,使用vscode下载的vue的插件:vetur和vue-helper这两个但随后在写代码的时候发现删除键(backspace)不能使用,其他键都能正常使用,也可以用鼠标选中右键剪切/删除最后发现是上面的插件会占用backspace按键作为插件的功能键解决方法点击左上角——文件——首选......
  • LLM生成markmap思维脑图
    提示词Createamindmapthatvisuallyorganizesthekeypointsfromthisbook.Themindmapshouldcoverthemajorthemesandconceptsdiscussedinthebook.Breakeachofthesebroadthemesintosubtopics.Provideaclearstructurewithhierarchicalnodesf......
  • 使用 C# WPF 根据 SEGY 数据绘制二维地震图
    一、引言在地震勘探领域,SEGY(SocietyofExplorationGeophysicistsY-data)文件格式是常见的地震数据存储格式。对于地震数据的可视化,通常会将SEGY文件中的振幅数据通过图像进行展示,以便进行分析。本文将介绍如何使用C#WPF应用程序绘制基于SEGY数据的二维地震图。二、需求......
  • 【Vim Masterclass 笔记07】S05L19:Vim 剪切、复制、粘贴操作同步练习
    文章目录S05L19Vim剪切、复制、粘贴操作同步练习(Exercise05-Cut,CopyandPaste)1训练目标2操作指令2.1打开dyp.txt文件2.2交换文件的头两行2.3将文件首行put到文件其他为止2.4练习在光标位置的上方粘贴文本行2.5通过交换字符顺序更正存在的笔误2.6交换......
  • 标准库简介 - STL容器、算法简介
    引言C++标准模板库(StandardTemplateLibrary,简称STL)是C++标准库的一部分,提供了丰富的数据结构和算法。STL的设计目标是通用性和高效性,它通过模板机制实现了高度的灵活性和复用性。本文将详细介绍STL中的容器和算法,并通过实例帮助读者理解其使用方法。1.STL容器简介......
  • Java 8系列之重新认识HashMap6
     摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(JavaDevelopmetKit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Ja......
  • JavaScript介绍
    JavaScript是一种高级的、解释型的编程语言,在网页开发和许多其他应用场景中发挥着关键作用。一、起源与发展JavaScript诞生于1995年,由Netscape公司的BrendanEich开发。最初它的设计目的是为了让网页能够具有交互性,能够在浏览器端进行一些简单的表单验证、动画效果等操作......
  • Java 8系列之重新认识HashMap8
     摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(JavaDevelopmetKit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Ja......
  • Java 8系列之重新认识HashMap4
     摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(JavaDevelopmetKit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Ja......