JMS: Java消息服务(Java Message Service),是一个Java平台中面向消息中间件的API,用于在两个应用程序之间或分布式系统中发送/接收消息,进行异步通信。
JMS相关概念
- 提供者:实现JMS规范的消息中间件服务器
- 客户端:发送或接收消息的应用程序
- 生产者/发布者:创建并发送消息的客户端
- 消费者/订阅者:接收并处理消息的客户端
- 消息:应用程序之间传递的数据内容
- 消息模式:在客户端之间传递消息的方式,JMS中定义了主题和队列两种模式
JMS消息模式
类型 | Topic | Queue |
---|---|---|
概要 | Publish Subscribe messaging 发布订阅消息 | Point-to-Point 点对点 |
状态 | topic数据默认不落地,是无状态的 | 数据默认会在mq服务器上以文件形式保存,也可以配置成DB存储。 |
完整性 | 并不保证每条数据,Subscriber都能接受到。 | Queue保证每条数据都能被receiver接收。 |
是否丢失 | 只有正在监听该topic地址的sub能够收到消息;没有sub监听,该topic就丢失了。 | Sender发送消息到目标Queue,receiver可以异步接收这个Queue上的消息。Queue上的消息如果暂时没有receiver来取,也不会丢失。 |
接收策略 | 监听同一个topic地址的多个sub都能收到publisher发送的消息。Sub接收完通知mq服务器 | 一个sender发送的消息,只能有一个receiver接收。receiver接收完后,通知mq服务器已接收,mq服务器对queue里的消息采取删除或其他操作。 |