Apache MQ(消息队列)
背景: 客户与服务器对象的生命周期紧密耦合,客户进程和服务对象进程都都必须正常运行;如果由于服务对象崩溃或者网络故障导致用户的请求不可达,客户会受到异常。所以分为生产者和消费者
发送和接收是异步的,发送者无需等待; 二者的生命周期未必相同: 发送消息的时候接收者不一定运行,接收消息的时候发送者也不一定运行; 一对多通信: 对于一个消息可以有多个接收者。
JMS:JMS是java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输
消息模型: Point-to-Point(P2P) --- 点对点(相当于两个人之间传递信息) Publish/Subscribe(Pub/Sub) --- 发布订阅(相当于新闻客户端中的订阅频道)
场景例子:比如说在注册的时候,需要向用户发送邮件和短信,我把信息放到消息队列中,比如说我的短信有邮件系统挂了,如果不使用MQ的话那么系统就不会成功的发送信息,用户就不会收到通知。采用MQ的话,即使发送系统挂了,在重启过后,系统会自动检测消息队列进行处理,
场景例子:在比如我A系统更新了数据需要告诉B系统,但是B系统挂了,不采用MQ的话,B系统根本不知道A系统更新了数据,但是使用了MQ的话,等到B系统重启成功,就会马上异步排队获取到消息队列中的更新信息,以便保证系统的安全性和数据的准确性。