【问题标题】:How can we listen continous without running seperate file for RabbitMQ我们如何在不为 RabbitMQ 运行单独文件的情况下连续收听
【发布时间】:2021-11-01 18:08:39
【问题描述】:

在python Django微服务中,我们使用rabbitMQ进行内部通信,现在我必须为单个服务运行两个终端

  1. 运行manage.py
  2. 运行receive.py进行消费

我们如何将这些结合在一起来监听和运行项目。

我正在关注此文档 https://www.rabbitmq.com/tutorials/tutorial-one-python.html

【问题讨论】:

  • 您必须更具体地了解您的计划。通常两个终端意味着两个独立的服务在不同的进程中。
  • @KlausD。不,对于单个服务,使用了 2 个终端,1 -> python manage.py runserver 和 2 -> python receive.py(用于接收队列消息)。没有运行 receive.py,我没有收到消息
  • 嗯,那是第二个服务。
  • @KlausD。我有 2 个微服务 A 和 B。从 A 我将通过 rabbitMQ 和 pika 发送消息。在第二个服务 B 中,我运行了 python manage.py run server 来运行项目并运行 python receive.py 来监听队列和接收
  • 你可以说一千次,但你仍然在运行两个进程,这会产生两个独立的服务,其中三个包含 A。

标签: python django rabbitmq microservices


【解决方案1】:

您可以尝试在消费者中作为后台线程启动。

而不是启动暂停执行并等待接收新消息的消费者指令

channel.start_consuming()

您可以生成一个新线程并将此函数关联到它。

import threading

#channel.start_consuming()


thread = threading.Thread(name='t', target=channel.start_consuming, args=())
thread.setDaemon(True)
thread.start()

然后按照骄傲者的指示继续。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 2015-03-27
    • 2012-06-02
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多