一、背景
1.在客户端与服务器进行通讯时.客户端调用后,必须等待服务对象完成处理返回结果才能继续执行。客户与服务器对象的生命周期紧密耦合,客户进程和服务对象进程都都必须正常运行;如果由于服务对象崩溃或者网络故障导致用户的请求不可达,客户会受到异常,点对点通信: 客户的一次调用只发送给某个单独的目标对象。下面的图不是同步方式,是异步方式,这样就产生了ActiveMQ。
二、什么是消息中间件
1.面向消息的中间件(MessageOrlented MiddlewareMOM)较好的解决了以上问题。发送者将消息发送给消息服务器,消息服务器将消感存放在若千队列中,在合适的时候再将消息转发给接收者。这种模式下,发送和接收是异步的,发送者无需等待; 二者的生命周期未必相同: 发送消息的时候接收者不一定运行,接收消息的时候发送者也不一定运行;一对多通信: 对于一个消息可以有多个接收者。
三、什么是JMS(其实就是消息中间件)
1.JMS是java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。
2.消息模型
2.1.点对点通讯方式,生产者、消息队列、消费者、一对一通讯,生产者产生消息,只允许有一个消费者进行消费。
2.1.1.特点:
- 每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)
- 发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列
- 接收者在成功接收消息之后需向队列应答成功
2.2.发布订阅通讯方式,生产者、主题、消费者,一个生产者,多个消费者。
四、消息中间件的应用场景
五、本地安装
1.直接解压
2.启动
3.浏览器访问:127.0.0.1:8161(账户/密码:admin)
六、编写生产者代码
1.项目结构图
2.pom.xml
3.Producer.java
4.启动项目
七、编写消费者代码
1.项目结构图
2.pom.xml
3.Consumer.java
4.结果(消费成功了,后台已经打印日志了)
八、mq的主题与订阅的代码实现
1.项目图
2.pom.xml
3.Producer.java
4.Consumer.java
5.测试结果(先启动消费者、在启动生产者、并且支持多个消费者)
九、总结
Always keep the faith!!! 天太晚了,凌晨一点了,各位晚安