1,RabbitMq:
它比kafka成熟,支持AMQP协议(跨语言)处理,在可靠性上,RabbitMq超过kafka,在性能方面超过ActiveMQ。 数据一致性 完整性好Kafka:Kafka设计的初衷就是处理日志的,不支持AMQP事务处理,可以看做是一个日志系统,针对性很强,所以它并没有具备一个成熟MQ应该具备的特性Kafka的性能(吞吐量、tps)比RabbitMq要强,如果用来做大数据量的快速处理storm实时计算 是比RabbitMq有优势的。2,
消息系统的核心作用就是三点:解耦,异步和并行
3,
rabbitmq消息模型
主要2中 确定消费者数据 简单类型和work work多个消费者 默认均匀消费 可设置每次去一个 能者多劳不确定消费者模型3种 即发布订阅有三种 有交换机 可控制发给那些队列fanout 广播 消息发给所有绑定交换机的队列 消息能重复消费(发给了很多队列)direct 定向 指定路由topic 通配符 符合路由模式的队列 和direct对比 支持通配符# 多个 *一个 其他和direct一样rabbitmq消息发送确认 到达交换机回调接口是ConfirmCallback 到达队列是ReturnCallback消息接收确认 channel.basicAck方法 实现ChannelAwareMessageListener 接口
防止消费者丢失数据 消息确认机制rabbitmq丢失数据 持久化
生产者丢失数据 生产者启动confirm机制 成功后会有返回, 发送失败 生产者确认机制 mq给生产者一个回执
消息重复消费 解决幂等性即可 比如先查询一下 有就更新 不插入消息顺序 拆分队列 一个队列对应一个消费者 不拆分队列 用一个消费者 然后消费者用队列排序