高性能的原因: RabbitMQ采用的是Erlang语言编写,该语言最初是用在交换机领域的,Erlang和原生的Socket有着一样的延迟
AMQP协议模型:

消息生产者投递消息到具体的server下的virtual host下的某一个 exchange
AMQP核心概念
Server: AMQP服务实体
Connection: 客户端与Server建立的网络连接
Channel: 网络信道,所有的操作基本上都在Channel中完成,客户端可以建立多个Channel,每个Channel代表一个会话任务。类似于数据库连接里面的session
Message: 消息实体。包括 Properties和Body
Virtual Host: 虚拟主机。主要进行逻辑隔离,是最上层的路由。就像redis中的16个数据库中的一个数据库。
Exchange: 接收消息,根据路由键转发消息到绑定的队列。 “绑定” 就是交换机到消息队列的对应关系
Binding:绑定, Routing Key:路由规则
Queue:消息队列
RabbitMQ的安装上网搜索着装吧,我另一篇文章介绍了在Docker安装的命令 https://www.cnblogs.com/zmeRecord/articles/12592613.html
Rabbit消息生产与消费
首先客户端与消息服务建立连接
ConnectionFactory,Connection,Channel,Queue Producer Consumer
RabbitMQ生产
1.必须要指定提供服务的主机IP
2.必须要指定消息生产channel,需要投递的交换机是哪个,还有路由key是什么, 这样才能准确的将消息投递到具体的队列上
3.最后必须要关闭连接
RabbitMQ消费(消费的过程就是消费者消费具体队列上存储的消息)
1.必须要指定提供服务的主机IP
2.必须要指定Channel绑定的队列是哪个,
3.必须指定Channel绑定的消费者是哪个
4.必须绑定路由KEY和交换机的关系
3种类型的交换机
DirectExchange: 直连交换机,根据路由KEY定位到一个具体的队列
TopicExchange: 根据Topic进行对队列的模糊匹配,然后进行消息投递
FanoutExchange:广播式交换机,不指定具体的路由键 直接投递到对应的交换机机下的所有队列
浙公网安备 33010602011771号