消息队列的可用性通过如下三方面保证:
- 事务
- 持久化
- 消息接收应答ACK
高并发下的高可用保证:
- 在可用性的基础上扩展
Broker其实就是以代码的形式启动Mq。正常时手动方式启动指定的服务器上的实例。
而broker启动的Mq是应用程序在自己服务器上启动的指定的Mq.
- ActiveMq支持两种消息生产和消费模式,
- 一种式队列式(一个生产者,多个消费者进行独占消费),
- 一种式订阅发布式(一个生产者,多个消费者共享)
- RabbitMq是在ActiveMq的两种模式基础上进行扩展了,
- 对队列模式基本不变,客户端生成消息队列,然后进行保证,也可以不声明消息队列,绑定已存在的队列
- 而对于订阅发布模型进行了改进,
每个订阅者保证有一个专属的队列
,此外每个订阅者的队列通过路由进行唯一标识,也就是队列名称,还设置了交换机进行统一管理,用来接收数据,完成订阅分发
这样做的好处就是可以把一个含有多个子的大业务交个一个交换机,交换机负责处理多个子业务的消息分发。每个消费者业务可以维护自己独立的消费队列
- 1: 一般建议是在rabbitmq操作面板创建。这是一种稳妥的做法。
- 2:按照常理来说,确实应该消费者这边创建是最好,消息的消费是在这边。这样你承受一个后果,可能我生产在生产消息可能会丢失消息。
- 3:在生产者创建队列也是可以,这样稳妥的方法,消息是不会出现丢失。
- 4:如果你生产者和消费都创建的队列,谁先启动谁先创建,后面启动就覆盖前面的
- RokcetMq
- 和activemq的生产消费模式是一样的
- 有一个NameSever的概念,作为注册中心进行独立的集群配置中心
- 本身安装就需要配置集群模式,适合高可用,高并发场景
- KafKa
- 和activeMq的生产消费 模式是一样的
- 在数据存储的持久化方面进行了优化