MQ:Message Queue 消息队列 作用:
MQ可以理解为现实生活中的邮局,当A给物品给B时,A无需直接去找B当面去将物品交给B,A可以通过邮局寄送,然后B通过查询快递信息(监听),知道物品达到邮局,然后B自己去邮局取即可。
消息队列的2种通信模式:
point-to-point:点对点(queue)
特点:点对点并不是只A发送的消息只能指定B接收,而是只A发送的任意一条消息只能由一个人接收处理,也就是每条消息只能被消费一次。
1)一个消息只能被一个服务接收
2)消息一旦被消费,就会消失
3)如果没有被消费,就会一直等待,直到被消费
4)多个服务监听同一个消费空间,先到先得
publish/subscribe发布/订阅模式(topic)
特点:A发送的消息可以被所有监听A的对象的接收,就好比学校的广播,所有的学生都可以收听校园广播信息。
1)一个消息可以被多个服务接收
2)订阅一个主题的消费者,只能消费自它订阅之后发布的消息。
3)消费端如果在生产端发送消息之后启动,是接收不到消息的,除非生产端对消息进行了持久化(例如广播,只有当时听到的人能听到信息)
Queue模式:
点对点通信,每个消息只有一个消费者,消息保证送达,离线消费者可以在下次上线后收到之前积压的消息。
Topic模式:
普通订阅:
不区分消费者,当前有几个客户端在线,就发送几条广播给客户端。
持久订阅:
区分消费者,消费者在线则直接发送消息广播给消费者,消费者离线,只要该消费者有topic登记,就会为其保留消息直至其再次连接后一次性推送,消息可以积压。