我正在使用兔子和皮卡。
在我的情况下,我有一个消息队列和三个使用者,并且我必须考虑到有一个使用者在确认消息之前先获取一条消息并死了(例如,使用者的服务重新启动),所以我想为每条消息并重新排队该超时消息(我认为持有该消息的用户已死。)
所以我用x-message-ttl编写了一个生产者,并将过期的消息路由到原始队列,但是我发现消息在ttl之后消失了。
我的制片人:
#!/usr/bin/env python
import time
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello', arguments={
'x-message-ttl': 5000,
'x-dead-letter-exchange': '',
'x-dead-letter-routing-key': 'hello'
})
count = 0
for i in range(10):
count += 1
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World %s!' % count)
print('publish %s' %count)
try:
time.sleep(10000)
except KeyboardInterrupt:
connection.close()
我发现5秒钟后,消息消失了,并且不在“ hello”队列中。