RabbitMQ的Topic Exchange
已于 2026年08月19日 14:39 修改
访问次数:0
1. 创建 Topic Exchange
RabbitMQ 的交换器主要通过 rabbitmqadmin 操作(推荐练习用)。
先确认有没有:
rabbitmqadmin --help如果没有,需要开启管理插件:
rabbitmq-plugins enable rabbitmq_management然后下载:
wget http://localhost:15672/cli/rabbitmqadmin赋权:
chmod +x rabbitmqadmin测试:
./rabbitmqadmin list exchanges2. 创建 Topic Exchange
创建:
./rabbitmqadmin declare exchange \
name=topic.exchange \
type=topic \
durable=true查看:
./rabbitmqadmin list exchanges应该看到:
topic.exchange topic3. 创建队列
创建订单队列:
./rabbitmqadmin declare queue \
name=order.queue \
durable=true创建支付队列:
./rabbitmqadmin declare queue \
name=payment.queue \
durable=true创建日志队列:
./rabbitmqadmin declare queue \
name=log.queue \
durable=true查看:
./rabbitmqadmin list queues4. 创建 Binding(重点)
order.queue 接收所有订单事件
绑定:
./rabbitmqadmin declare binding \
source=topic.exchange \
destination=order.queue \
routing_key="order.*"意思:
order.created
order.paid
order.cancelled
都会进入 order.queuepayment.queue 只接收支付
./rabbitmqadmin declare binding \
source=topic.exchange \
destination=payment.queue \
routing_key="order.paid"log.queue 接收全部消息
./rabbitmqadmin declare binding \
source=topic.exchange \
destination=log.queue \
routing_key="#"5. 查看绑定关系
执行:
./rabbitmqadmin list bindings你会看到:
topic.exchange -> order.queue order.*
topic.exchange -> payment.queue order.paid
topic.exchange -> log.queue #6. 发布消息测试
测试1:订单创建
发送:
./rabbitmqadmin publish \
exchange=topic.exchange \
routing_key=order.created \
payload="订单创建"查看队列:
./rabbitmqadmin list queues结果:
order.queue 1
log.queue 1
payment.queue 0解释:
order.created
匹配:
order.*
#测试2:支付成功
发送:
./rabbitmqadmin publish \
exchange=topic.exchange \
routing_key=order.paid \
payload="支付成功"查看:
./rabbitmqadmin list queues结果:
order.queue 2
payment.queue 1
log.queue 2测试3:取消订单
发送:
./rabbitmqadmin publish \
exchange=topic.exchange \
routing_key=order.cancelled \
payload="订单取消"结果:
order.queue +1
log.queue +1
payment.queue 不变7. 消费消息查看内容
查看 order.queue:
./rabbitmqadmin get \
queue=order.queue \
ackmode=ack_requeue_false输出类似:
订单创建
订单支付
订单取消参数:
ackmode=ack_requeue_false表示:
消费后删除消息。
8. 练习通配符
再创建:
./rabbitmqadmin declare queue \
name=user.queue绑定:
./rabbitmqadmin declare binding \
source=topic.exchange \
destination=user.queue \
routing_key="user.#"发送:
./rabbitmqadmin publish \
exchange=topic.exchange \
routing_key=user.login \
payload="用户登录"发送:
./rabbitmqadmin publish \
exchange=topic.exchange \
routing_key=user.profile.update \
payload="修改资料"查看:
./rabbitmqadmin get \
queue=user.queue \
ackmode=ack_requeue_false两个都会收到。
9. 删除练习环境
如果想重新开始:
删除交换器:
./rabbitmqadmin delete exchange \
name=topic.exchange删除队列:
./rabbitmqadmin delete queue \
name=order.queue你现在只需要记住 Topic 的三个核心命令:
创建交换器
declare exchange
绑定队列
declare binding
发送消息
publish学习 RabbitMQ 的顺序建议:
- ✅ Exchange 创建
- ✅ Queue 创建
- ✅ Binding 绑定
- ✅ publish 发送
- ✅ get 消费
评论(0)