mq

消息队列中间件如何选型

  1. 协议:AMQP、STOMP、MQTT、私有协议等。
  2. 消息是否需要持久化。
  3. 吞吐量。
  4. 高可用支持,是否单点。
  5. 分布式扩展能力。
  6. 消息堆积能力和重放能力。
  7. 开发便捷,易于维护。
  8. 社区成熟度。

===================================================

作用:消峰填谷,解耦

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中

 

 

 

 

 

  

posted @ 2020-07-31 17:26  骑驴晒太阳  阅读(384)  评论(0)    收藏  举报