# -*- coding: utf-8 -*-
import pika
import sys

user_info = pika.PlainCredentials('user', 'J70e6K7BRrxrU1dO')
connection = pika.BlockingConnection(
    pika.ConnectionParameters('rabbitmq.rabbitmq.svc.cluster.local', 5672, '/', user_info)
)
channel = connection.channel()

# 1. 声明同一个交换机
channel.exchange_declare(exchange='header_logs', exchange_type='headers')

# 2. 创建临时队列
result = channel.queue_declare(queue='', exclusive=True)
queue_name = result.method.queue

# 3. 绑定：x-match 可以是 'all'（全匹配）或 'any'（任一匹配）
bind_args = {
    'x-match': 'all',          # 所有键值都匹配才收
    'x-version': '1',
    'x-env': 'prod'
}
channel.queue_bind(exchange='header_logs', queue=queue_name, arguments=bind_args)
print(' [*] Waiting for messages matching', bind_args)

# 4. 回调
def callback(ch, method, properties, body):
    print(' [x] %r' % body.decode())

channel.basic_consume(queue=queue_name, on_message_callback=callback, auto_ack=True)
channel.start_consuming()