python - 我如何使用 rabbitmq-delayed-message-exchange 插件在 rabbitmq 中发送延迟消息?

标签 python rabbitmq

我已经安装了从这里发送延迟消息的插件 rabbitmq-delayed-message-exchange .

我找不到在 python 中使用它的任何帮助。我刚开始使用 rabbitmq 。

这是我一直在尝试的:

import pika  
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.exchange_declare("test-x", type="x-delayed-message", arguments={"x-delayed-type":"direct"})  
channel.queue_declare(queue='task_queue',durable=True)
channel.queue_bind(queue="task_queue", exchange="test-x", routing_key="task_queue")
channel.basic_publish(exchange='test-x',routing_key='task_queue',body='Hello World! Delayed',arguments={"x-delay":100})
print(" [x] Sent 'Hello World! Delayed'")
connection.close()

以下是列出的交易所:

sudo rabbitmqctl list_exchanges
Listing exchanges ...
amq.direct  direct
test-x  x-delayed-message
amq.fanout  fanout
amq.match   headers
amq.headers headers
    direct
amq.rabbitmq.trace  topic
amq.topic   topic
amq.rabbitmq.log    topic

我不知道如何将延迟参数传递给 basic_publish 函数

感谢任何帮助

最佳答案

您需要将 x-delay header 添加到您的消息属性中,并以毫秒为单位指定延迟值。试试这个:

channel.basic_publish(
    exchange='test-x',
    routing_key='task_queue',
    body='Hello World! Delayed',
    properties=pika.BasicProperties(headers={"x-delay": 1000})
)

关于python - 我如何使用 rabbitmq-delayed-message-exchange 插件在 rabbitmq 中发送延迟消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35449234/

相关文章:

python - 如何在 Python 中将一个字符串 append 到另一个字符串?

python - 了解 Popen.communicate

java - RabbitMQ:查找因消费者异常而导致 channel 关闭的原因

python - celery 工作人员拒绝反序列化 application/json 的不受信任内容类型

node.js - 为什么建立这么多连接?

java - spring-amqp 事务语义

python - Docker:如何运行 cython_extensions?

python - 让 Django 仅返回存储为 models.TextField() 的文本的前 50 个字符

python - python读取文件并打印出1、2、3、4字母的单词数

Python pika 库偶发行为,丢弃消息