rabbitmq requeue

文章来源:https://blog.lqsos.com/archives/57.html

create

credentials = pika.PlainCredentials(username='mq', password='654321')
connection = pika.BlockingConnection(
        pika.ConnectionParameters(
            host='localhost', port=5672, virtual_host='/',
            credentials=credentials
        )
    )
if connection.is_closed:
    print('connection to node failed')

channel = connection.channel()

# create exchange
channel.exchange_declare(
    exchange='test',
    exchange_type='fanout'
)

# create queue创建队列
channel.queue_declare(queue='test', durable=True)

# queue bind to exchange
channel.queue_bind(exchange='test', queue='test', routing_key='t')

queue_info = requests.get(url='http://localhost:15672/api/queues', auth=('mq', '654321'))
print(queue_info.content.decode())
exchange_info = requests.get(url='http://localhost:15672/api/exchanges', auth=('mq', '654321'))
print(exchange_info.content.decode())
exit()
exit()

queue info队列信息

{
    "messages_details":{
        "rate":0
    },
    "messages":0,
    "messages_unacknowledged_details":{
        "rate":0
    },
    "messages_unacknowledged":0,
    "messages_ready_details":{
        "rate":0
    },
    "messages_ready":0,
    "reductions_details":{
        "rate":0
    },
    "reductions":4588,
    "node":"mq@he",
    "arguments":{

    },
    "exclusive":false,
    "auto_delete":false,
    "durable":true,
    "vhost":"/",
    "name":"test",
    "message_bytes_paged_out":0,
    "messages_paged_out":0,
    "backing_queue_status":{
        "mode":"default",
        "q1":0,
        "q2":0,
        "delta":[
            "delta",
            "undefined",
            0,
            0,
            "undefined"
        ],
        "q3":0,
        "q4":0,
        "len":0,
        "target_ram_count":"infinity",
        "next_seq_id":0,
        "avg_ingress_rate":0,
        "avg_egress_rate":0,
        "avg_ack_ingress_rate":0,
        "avg_ack_egress_rate":0
    },
    "head_message_timestamp":null,
    "message_bytes_persistent":0,
    "message_bytes_ram":0,
    "message_bytes_unacknowledged":0,
    "message_bytes_ready":0,
    "message_bytes":0,
    "messages_persistent":0,
    "messages_unacknowledged_ram":0,
    "messages_ready_ram":0,
    "messages_ram":0,
    "garbage_collection":{
        "minor_gcs":3,
        "fullsweep_after":65535,
        "min_heap_size":233,
        "min_bin_vheap_size":46422,
        "max_heap_size":0
    },
    "state":"running",
    "recoverable_slaves":null,
    "consumers":0,
    "exclusive_consumer_tag":null,
    "policy":null,
    "consumer_utilisation":null,
    "idle_since":"2018-01-24 7:47:07",
    "memory":34720
}

exchange info

{
    "name":"test",
    "vhost":"/",
    "type":"fanout",
    "durable":false,
    "auto_delete":false,
    "internal":false,
    "arguments":{

    }
}

publish message发布消息

# publish message
channel.basic_publish(
    routing_key='t', body=json.dumps({'test': 'test'}),
    properties=pika.BasicProperties(delivery_mode=2),
    exchange='test'
)

receive queue接收消息

# receive queue


def methods(ch, method, properties, body):
    print(body)
    # ch.basic_ack(delivery_tag=method.delivery_tag)
channel.basic_consume(consumer_callback=methods, queue='test')
channel.start_consuming()

result

b'{"test": "test"}'

set attribute requeue

def methods(ch, method, properties, body):
    print(body)
    # ch.basic_ack(delivery_tag=method.delivery_tag)
channel.basic_recover(requeue=True)
channel.basic_consume(consumer_callback=methods, queue='test')
channel.start_consuming()

开启多个消费者时,当某个消费者宕了时会把消息分发到其它消费者处理,可以开启多个消费者测试一下

你可能感兴趣的:(rabbitmq学习笔记)