我已经安装了插件来从这里发送延迟消息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()
Run Code Online (Sandbox Code Playgroud)
以下是列出的交易所:
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
Run Code Online (Sandbox Code Playgroud)
我不知道如何将延迟参数传递给 basic_publish 函数
任何帮助表示赞赏
您需要将x-delay
标头添加到您的消息属性并以毫秒为单位指定延迟值。尝试这个:
channel.basic_publish(
exchange='test-x',
routing_key='task_queue',
body='Hello World! Delayed',
properties=pika.BasicProperties(headers={"x-delay": 1000})
)
Run Code Online (Sandbox Code Playgroud)