复习篇-rabbitmq

rabbitmq和kafka对比

  1. rabbitmq消息可靠性(消息有序、消息重复、消息丢失)高,kafka低
  2. rabbitmq吞吐量低,kafka高

消息发送者发送方式有几种?

发送者发送方式有两大类:
1.事务提交(不推荐,吞吐量极低)
channel.txSelect(); //发送消息之前开启事务
– 消息发送
channel.txCommit(); //提交事务
channel.txRollback ; // 异常是作 事务回滚
2.开启comfirm提交
(1).普通提交(同步)
(2).批量提交(同步)
(3).异步提交

消费确认有几种?

消费者消费确认是回复ack应答

6种队列模式

  1. 简单模式 (一个生产者,一个队列,一个消费者)
  2. 1对多模式(一个生产者,一个队列,多消费者)
  3. 订阅发布模式(一个生产者,多个队列,多消费者)
  4. 路由模式(队列和交换机进行绑定生成路由key,生产者生产消息的时候带上路由key发送)
  5. topic模式(在路由模式的基础之上,支持生产者使用通配符匹配多个队列)

4种集群方案

  1. 主从模式
  2. 镜像模式
  3. 远程模式
  4. 多活模式

消息的有序性

rabbitmq的队列天然支持消息有序性

消息的重复

重复消费需要从两个方面:

  1. 生产者方面:保证不要重复投递
  2. 消费者方面:保证每次准确的给ack应答,不要重复消费

消息的丢失

1.生产者confirm失败,生产者报错导致mq给生产者的应答没收到
2.mq数据没做持久化,mq收到消息后崩了
3.消费者消费后先给了ack,然后还没来得及处理业务就崩了

信道、交换机、队列、vhost都是真实存在的还是虚拟的?

信道:
信道是客户端和rabbitmq通讯的通道,是tcp连接之上的虚拟通道,为什么要用虚拟的而不用真实的呢?因为频繁的创建销毁tcp太耗性能,为什么一个客户端的所有线程都用通一个tcp连接,利用amqp协议的来区分不用的信道。
vhost:
虚拟主机,虚拟的rabbitmq,是mini版的rabbitmq,每个vhost的里都有自己的交换机,队列和绑定关系,这样就可以在一个rabbitmq里面维护多个项目使用
交换机:
接收客户端消息转发到相应的队列中,因为有了交换机才让rabbitmq实现了多种队列模式的功能。

消息消费失败后尝试重新消费

设置重试次数,次数一到就会把消息转入死信队列

rabbitmq的数据持久化

rabbitmq持久化分为三个部分: 交换器的持久化、队列的持久化和消息的持久化

你可能感兴趣的:(复习篇,rabbitmq,java,队列)