import pika
# 建立 tcp 连接
connection = pika.BlockingConnection(pika.ConnectionParameters('10.43.166.82'))
# 建立虚拟连接
channel = connection.channel()
# 创建 queu
# 如果不指定 queue 参数,rabbitmq server 会随机生成一个名字
channel.queue_declare(queue='hello')
# 发送消息
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!')
print(" [x] Send msg")
# 确认消息发送,关闭 TCP 连接
connection.close()
queue 定义
queue_declare(self, queue='', passive=False, durable=False
exclusive=False, auto_delete=False,
arguments=None)
- queue: 指定队列名字;
- passive: 只检查队列是否存在;
- durable: 是否持久化;
- exclusive: 只有当前 connection 可以访问;
- auto_delete: 消费者取消或断开连接时删除队列;
- arguments: 用户 k/v
持久化
queue 持久化
msg 持久化
当有多个消费者时,默认情况是每次把消息发给下一个消费者。
TODO
queue sz
message TTL
fanout 的 exchange 会忽略 routing_key, 但是 bing 的名字还是指定的,
没有指定则用 queue 的名字