当前位置: 首页 > 编程笔记 >

Python如何使用RabbitMQ的消息

吕昀
2023-03-14
本文向大家介绍Python如何使用RabbitMQ的消息,包括了Python如何使用RabbitMQ的消息的使用技巧和注意事项,需要的朋友参考一下

示例

从导入库开始。

from amqpstorm import Connection

使用消息时,我们首先需要定义一个函数来处理传入的消息。这可以是任何可调用的函数,并且必须采用一个消息对象或一个消息元组(取决于中to_tuple定义的参数start_consuming)。

除了处理传入消息中的数据外,我们还必须确认或拒绝消息。这很重要,因为我们需要让RabbitMQ知道我们已正确接收并处理了该消息。

def on_message(message):
    """This function is called on message received.

    :param message: Delivered message.
    :return:
    """
    print("Message:", message.body)

    # 确认我们已成功处理该消息。
    message.ack()

    # 拒绝邮件。
    # message.reject()

    # 拒绝邮件,然后将其放回队列中。
    # message.reject(requeue = True)

接下来,我们需要建立与RabbitMQ服务器的连接。

connection = Connection('127.0.0.1', 'guest', 'guest')

之后,我们需要建立一个频道。每个连接可以有多个通道,通常在执行多线程任务时,建议(但不是必需)每个线程一个。

channel = connection.channel()

设置好频道后,我们需要让RabbitMQ知道我们要开始使用消息。在这种情况下,我们将使用先前定义的on_message函数来处理所有消耗的消息。

我们将在RabbitMQ服务器上侦听的队列将成为simple_queue,并且我们还告诉RabbitMQ,一旦处理完所有传入消息,我们将对其进行确认。

channel.basic.consume(callback=on_message, queue='simple_queue', no_ack=False)

最后,我们需要启动IO循环以开始处理RabbitMQ服务器传递的消息。

channel.start_consuming(to_tuple=False)
           

 类似资料:
  • 本文向大家介绍Python如何将消息发布到RabbitMQ,包括了Python如何将消息发布到RabbitMQ的使用技巧和注意事项,需要的朋友参考一下 示例 从导入库开始。 接下来,我们需要打开与RabbitMQ服务器的连接。 之后,我们需要建立一个频道。每个连接可以有多个通道,通常在执行多线程任务时,建议(但不是必需)每个线程一个。 建立频道后,我们就可以开始准备信息了。 现在,我们可以通过简单

  • 我使用Laravel包https://github.com/bschmitt/laravel-amqp/在基于微服务的应用程序中使用RabbitMQ发布和使用消息。我在服务中发布消息,并试图在另一个服务中使用相同的消息。 留档在使用队列中已发布消息的代码上非常清楚。然而,在传统的Laravel队列过程中,我们将描述要在句柄()方法中执行的过程。并调用php artisan队列: work命令来执行

  • 主要内容:一、前情回顾,二、业务场景介绍,三、初步落地一、前情回顾 之前给大家聊了一下,面试时如果遇到消息中间件这个话题,面试官上来可能问的两个问题: 你们的系统架构中为什么要引入消息中间件? 系统架构中引入消息中间件有什么缺点? 关于这两个问题的回答,可以参见之前的两篇文章: 《 为什么要使用MQ消息中间件?这几个问题必须拿下!》 《 用了MQ消息中间件后,我开始后悔了...》 在问完这两个问题之后,不同风格的面试官可能会展开不同的发问。 针对那种

  • 我是一个新的学习者,试图理解拉雷维尔的拉比MQ。我已找到驱动程序vyuldashev/laravel队列rabbitmq 我已经配置应用程序/queue.php,并运行驱动程序与此语法"php工匠队列:工作Rabbitmq"。控制器。我不会在我的控制器中调度作业,因为laravel只是监听消息并处理消息。谁能帮我解释一下这是怎么回事?谢啦

  • 在RabbitMQ级别上是否有任何机制允许我使用下一个消息直到上一个消息被加密为止?还是必须在服务器之间开发某种锁定机制?

  • 我有一个Java程序,它向RabbitMQ发送消息。我只知道交易所的名字。没有队列、绑定等。 我的问题是:我如何才能看到程序是否成功发送这些,只知道交换名称? 谢谢 问候,塞班