一、概要
JMS(JAVA Message Service 即java消息服务) jms的客户端之间可以通过JMS服务进行异步的消息传输
二、消息模型
#p2p(点对点):1、元素:消息队列、发送者、接收者、每个消息被发送到一个特定的队列,接收者从队列获取消息,队列保留这消息知直到被消费或者超时
2、特点:每个消息只有一个消费者、发送者和接收者没有时间依赖(同步)、接收者接收成功需要向队列应答成功
#pub/sub(发布订阅模式)
1、元素:主题(Topic)、发布者(Publisher)、订阅者
2、特点:每个消息可以有多个消费者、发布者和订阅者之间有时间上的依赖性。针对某个主题的订阅者,它必须在创建订阅者之后才能消费发布消息
三、消息的消费
#JMS中消息的生产和消费是异步的。对于消费者来说,JMS消费者可以通过两种方式来消费消息1、同步:订阅者或接收者调用receive方法来接收消息,receive在能够接收消息前一直阻塞
2、异步:订阅者或接收者可以注册为一个消息监听器。当消息到达之后,系统自动调用监听器的onMessage方法
四、JMS编程模型
#ConnectionFactory创建Connection对象的工厂,针对两种不同的消息模型,分别有QueueConnectionFactory和TopicConnectionFactory
#Connection
表示客户端和JMS系统之间建立连接。Connection可以产生一个或者多个Session
#Session 会话-是接收或者发送消息的线程
Session是操作消息的接口,用于创建消息源(Destination)或者生产者、消费者
#Destination
消息源:即点对点的某个队列或者发布订阅的某个主题(topic)
#MessageProducer
消息生产者由session创建,并将消息发送到消息源(Destination),调用send方法发送消息
#MessageSonsumer
消息消费者由session创建,接收消息源(Destination)的消息,调用receive方法得到消息对象
#MesssgeListener
消息监听器:如果注册了消息监听器,一旦消息到达,将自动调用监听器的onMessgae方法
五、总结
JMS规范是许多消息中间件比如ActiveMQ、MetaQ、kestrel等的基层实现的模型,kafka这样的分布式服务框架也是基于JMS规范,他们的共同特点就是提供点对点或者发布订阅这样的异步调用服务。