producer_priority.py 897 B

1234567891011121314151617181920212223242526272829303132
  1. # -*- coding: utf-8 -*-
  2. import pika
  3. import sys
  4. user_info = pika.PlainCredentials('user', 'J70e6K7BRrxrU1dO')
  5. connection = pika.BlockingConnection(
  6. pika.ConnectionParameters('rabbitmq.rabbitmq.svc.cluster.local', 5672, '/', user_info)
  7. )
  8. channel = connection.channel()
  9. # 1. 声明优先级队列,最多支持 10 个优先级
  10. channel.queue_declare(
  11. queue='priority_queue',
  12. durable=True,
  13. arguments={'x-max-priority': 10}
  14. )
  15. # 2. 从命令行读取优先级和消息
  16. priority = int(sys.argv[1]) if len(sys.argv) > 1 else 0
  17. message = ' '.join(sys.argv[2:]) or f'Message with priority {priority}'
  18. channel.basic_publish(
  19. exchange='',
  20. routing_key='priority_queue',
  21. body=message,
  22. properties=pika.BasicProperties(
  23. priority=priority, # 关键
  24. delivery_mode=2 # 持久化
  25. )
  26. )
  27. print(f" [x] Sent priority={priority}: {message}")
  28. connection.close()