私は最近、メッセージを遅らせることができるRabbitMQ機能を発見しました。必要なものに似た例は見つかりませんでしたが、うまく機能します。
A、B、C の 3 種類のメッセージがあるとします。1 時間と 2 時間の値を持つ 2 つの delay_queue があり'x-message-ttl
ます。また、destination_queues には 3 つのタイプがあり、それぞれが特定のメッセージ タイプに対応しています。
私が達成したいのは、delay_queues の 1 つのメッセージが TTL に達した後、そのタイプに応じて destination_queues の 1 つにルーティングされることです。このようなもの:
これは、RabbitMQ メッセージ プロパティを使用しても可能ですか? 何か案は?メッセージを遅延キューに送信するコード (有効期限が切れると、hello キューに送信されます):
#!/usr/bin/env python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(
'localhost'))
channel = connection.channel()
channel.confirm_delivery()
channel.queue_declare(queue='hello', durable=True)
channel.queue_bind(exchange='amq.direct',
queue='hello')
delay_channel = connection.channel()
delay_channel.confirm_delivery()
delay_channel.queue_declare(queue='hello_delay', durable=True, arguments={
'x-message-ttl' : 3600000,
'x-dead-letter-exchange' : 'amq.direct',
'x-dead-letter-routing-key' : 'hello'
})
while 1 :
delay_channel.basic_publish(exchange='',
routing_key='hello_delay',
body="test",
properties=pika.BasicProperties(delivery_mode=2))
print "Sent to delay queue"