带你走进EJB--JMS
来源:互联网 发布:近视眼手术 知乎 编辑:程序博客网 时间:2024/04/28 11:39
在上篇文章中我们对EJB有了一个基本的了解,因为要继续介绍EJB的相关分类,而在分类中有一个是消息驱动Bean(MessageDriverBean),而MDB是基于JMS(Java Message Service,Java消息服务),所以在这里很有必要对JMS进行了解.
什么是JMS?
JMS(Java Message Service)是Java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。JMS支持两种消息模型:Point-to-Point(P2P)和Publish/Subscribe(Pub/Sub),即点对点和发布订阅模型。
P2P模型(如下图)
在P2P模型中,有下列概念:消息队列(Queue)、发送者(Sender)、接收者(Receiver)。每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到它们被消费或超时。
在P2P模型中需要注意一下三点.
- 每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)
- 发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列。
- 接收者在成功接收消息之后需向队列应答成功,如果你希望发送的每个消息都应该被成功处理的话,那么你需要P2P模型。
Pub/Sub模型(如下图)
在Pub/Sub模型中,有下列概念: 主题(Topic)、发布者(Publisher)、订阅者(Subscriber)。客户端将消息发送到主题。多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。
在此模型下需要注意的两点
- 每个消息可以有多个消费者。
- 发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅之后,才能消费发布者的消息,而且,为了消费消息,订阅者必须保持运行的状态。
消息的消费
在JMS中,消息的产生和消费是异步的。对于消费来说,JMS的消费者可以通过两种方式来消费消息。
- 同步 –订阅者或接收者调用receive方法来接收消息,receive方法在能够接收到消息之前(或超时之前)将一直阻塞。
- 异步 –订阅者或接收者可以注册为一个消息监听器。当消息到达之后,系统自动调用监听器的onMessage方法。
以上内容为JMS的基本模型,接下来我们将会研究一下JMS的编程模型来加深对JMS的理解.
- 带你走进EJB--JMS
- 带你走进EJB--JMS编程模型
- 带你走进EJB--MDB
- 带你走进EJB--事务管理
- 带你走进EJB--事务管理
- 带你走进EJB--EJB容器
- 带你走进EJB--EJB实例
- 带你走进EJB--EJB3.0
- 带你走进EJB--MDB的NameNotFoundException
- 带你走进EJB--事务基本概念
- 带你走进EJB--事务并发问题
- 带你走进EJB--事务隔离级别
- 带你走进EJB--事务管理(2)
- 带你走进EJB--将EJB发布为Webservice(1)
- 带你走进EJB--将EJB发布为Webservice(2)
- 带你走进EJB--将EJB发布为Webservice(3)
- 带你走进EJB--将EJB发布为Webservice(4)
- 带你走进EJB--EJB和Spring对比
- snprintf高阶用法
- python 数据结构线性表(一) --- 顺序存储表
- 带你走进EJB--EJB3.0
- 路由域和路由表
- Source Insight 常用设置和快捷键大全
- 带你走进EJB--JMS
- String类
- 搜索
- 递归调用输出元素
- Populating Next Right Pointers in Each Node II
- 黑马程序员_三、java中流程控制语句、函数及数组的知识
- awk(一)概述
- getchar( ) 不接收回车不回显设置
- e-人事管理系统-招聘管理-人事推荐