1、MQ的应用场景
a)主要解决异步消息
b)应用解耦
c)流量消峰等问题
d)日志处理(kafka)
2、JMS消息模型
a)P2P(Point to Point)点对点模式(也就是一个任务只能被一个消费者消费)
1、包含三个角色:消息队列(Queue),发送者(Sender),接受者(Receiver)
2、简单队列(一对一)
3、工作队列(轮循队列)(一对多)
4、平分队列(能者多劳)(一对多)
b)Publish/Subscribe(Pub/Sub)发布订阅模式
1、包含三个角色:主题(Topic),发布者(Publisher),订阅者(Subscriber)
2、一个生产者,多个消息者
3、每个消费者都有自己的队列
4、生产者没有直接把消息发送到队列,而是发送到交换机 转发器exchange
5、每个队列都要绑定到交换机上
6、生产者发送的消息经过交换机到达队列,就能实现一个消息被多个消费者消费
7、Exchange(交换机 转发器)
1、一方面是接受生产者的消息,另一方面是向队列推送消息
2、匿名转发
3、Fanout(不处理路由键,广播)
4、Direct(处理路由键,发布与订阅,完全匹配)
5、Topic(主题,规则匹配)
c)路由模式(路由键)
d)Topic模式
1、将路由键和某模式匹配
2、"#"匹配一个或者多个
3、“*”匹配一个
3、Rabbitmq的消息确认机制(事务+confirm)
a)在rabbitmq中,可以通过持久化数据,解决rabbitmq服务器异常的数据丢失问题
b)问题:生产者将消息发送出去之后,消息到底有没有达到rabbitmq服务器,默认是不知道的
解决(两种方式):
1、AMQP实现事务机制
2、Confirm
c)事务机制(txSelect,txCommit,txRollback)
1、txSelect:用户将当前channel设置成transation模式
2、txCommit:用于提交事务
3、txRollback:回滚事务
原文:https://www.cnblogs.com/liugp/p/11216250.html