mq
消息队列中间件如何选型
-
协议:AMQP、STOMP、MQTT、私有协议等。
-
消息是否需要持久化。
-
吞吐量。
-
高可用支持,是否单点。
-
分布式扩展能力。
-
消息堆积能力和重放能力。
-
开发便捷,易于维护。
-
社区成熟度。
===================================================
作用:消峰填谷,解耦
kafka:
服务端 broker 消费端
同一个消费者组内一个消息只能被一个消费者消费
broker -->topic(消息的逻辑位置) --->partion(消息的物理位置)
consumer-->offset(如果consumer消费成功,offset+1,返回给队列)
====================================================
rabbitmq:
服务端 broker(exchange queue) 消费端
服务端消息确认机制:
ackCallBack: 服务端 exchange
returnCallBack: 服务端 queue
mq路由管理:
exchange1 绑定 routeKey
exchange1 绑定 queue1
routeKey 绑定 queue1
exchange2 绑定 routeKey
exchange2 绑定 queue2
routeKey 绑定 queue2
消费端消息确认:
ack机制:当消息发送成功,通知mq删除消息
nack机制:当消息发送失败,通知mq需要重新消费
一个queue对应一个消费端

ConnectionFactory:与RabbitMQ服务器连接的管理器
Connection:与RabbitMQ服务器的连接
Channel:与Exchange的连接
Exchange:接受消息提供者(生产者)的消息,并根据消息的RoutingKey和Exchange绑定的BindingKey分配消息
Queue:存储消息接收者(消费者)的消息
RoutingKey:指定当前消息被谁接受
BindingKey:指定当前Exchange下,什么样的RoutingKey会被下派到当前绑定的Queue中

浙公网安备 33010602011771号