
Elasticsearch
开源的 分布式搜索和分析引擎
RabbitMQ 是一个开源的 消息代理(Message Broker),基于 AMQP(Advanced Message Queuing Protocol) 协议实现,由 Pivotal 维护。它被广泛用于 异步任务处理、应用解耦、流量削峰 等场景,支持多种消息模式(如点对点、发布/订阅),并具备高可用、可扩展的特性。RabbitMQ 以其 轻量级、易用性和丰富的插件生态 成为企业级消息队列的首选之一。
fanout
、direct
、topic
、headers
四种路由规则术语 | 说明 |
---|---|
Producer | 消息生产者,发送消息到 Exchange |
Consumer | 消息消费者,从 Queue 接收消息 |
Exchange | 消息路由组件,决定消息投递到哪些 Queue |
Queue | 存储消息的缓冲区,消费者从中读取 |
Binding | Exchange 和 Queue 的绑定规则(如 topic.order.# 匹配订单消息) |
Virtual Host | 虚拟主机,隔离不同业务的消息(类似命名空间) |
# 使用 Docker 快速启动
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
访问 http://localhost:15672
(默认账号:guest
/guest
)
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='', routing_key='hello', body='Hello RabbitMQ!')
print(" [x] Sent 'Hello RabbitMQ!'")
connection.close()
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare("hello", false, false, false, null);
channel.basicConsume("hello", true, (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), "UTF-8");
System.out.println(" [x] Received '" + message + "'");
}, consumerTag -> {});
ha-mode=all
)channel_max
和 frame_max
提升并发能力rabbitmqctl status
)basicQos
限制预取数量(防止单消费者过载)本站速览导航提供的RabbitMQ都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由速览导航实际控制,在2025年4月1日 下午8:34收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,速览导航不承担任何责任。