RabbitMQ的发送与消费测试

发送

import pika
import sys

# 硬编码参数,明确打印出来让你亲眼确认
HOST = '127.0.0.1'
PORT = 5672  # 明确写死为 5672

print(f"🔗 正在连接 {HOST}:{PORT} ...")

connection = pika.BlockingConnection(
    pika.ConnectionParameters(
        host=HOST,
        port=PORT,          # 这里绝对不可能错
        virtual_host='/',
        credentials=pika.PlainCredentials('guest', 'guest')
    )
)
channel = connection.channel()

# 声明队列(使用 durable=True 避开 541 错误)
channel.queue_declare(queue='hello_world', durable=True)

message = ' '.join(sys.argv[1:]) if len(sys.argv) > 1 else "Hello World!"
channel.basic_publish(
    exchange='',
    routing_key='hello_world',
    body=message,
    properties=pika.BasicProperties(delivery_mode=2)
)
print(f"✅ 发送成功: {message}")
connection.close()


消费

import pika

# 1. 建立连接(必须和发送端参数完全一致)
connection = pika.BlockingConnection(
    pika.ConnectionParameters(
        host='127.0.0.1',
        port=5672,
        virtual_host='/',
        credentials=pika.PlainCredentials('guest', 'guest')
    )
)
channel = connection.channel()

# 2. 声明队列(幂等操作,确保队列存在;参数必须与发送端一致)
channel.queue_declare(queue='hello_world', durable=True)

print("⏳ 正在等待消息... (按 Ctrl+C 退出)")

# 3. 定义处理函数:收到消息时会自动调用这个函数
def callback(ch, method, properties, body):
    # body 是 bytes 类型,需要 decode 成字符串
    print(f"📩 收到消息: {body.decode()}")

# 4. 告诉 RabbitMQ 从 'hello_world' 队列取消息,交给 callback 处理
# auto_ack=True 表示收到后自动告诉服务器删除消息(简单场景够用)
channel.basic_consume(
    queue='hello_world',
    on_message_callback=callback,
    auto_ack=True
)

# 5. 开始循环接收(这里会阻塞,一直监听)
channel.start_consuming()

测试

打开两个控制台,然后先打开消费,再运行发送

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值