EJB——消息和消息驱动bean(二)
2016-07-23 15:31
232 查看
大多数MDB都是实现JMS接口(比如javax.jms.MessageListener)和使用Java组件(比如javax.jms.Message)的JMS消息消费者。
在Java EE环境中组件之间的通信有同步和异步两种方式,同步是指调用者和调用目标必须出现以便通信成功完成,也意味着调用者在处理之前必须等待目标完成服务请求 。
举例来说, 当你(调用者)给某个人打电话就是在进行同步通信。但是,如果你找的人(调用目标)不在怎么办?如果可能,你会留下语音信箱消息。通过存储你的消息以便接收者可以稍后接听并回应。语音信箱服务使异步通信成为可能。面向消息的中间件(message-oriented middleware, MOM)通过与语音信箱服务非常类似的方式支持消息——作为消息发送者和接收者之间的中间人,以让它们不必同时可用。
面向消息的中间件
面向消息的中间件是支持在系统组件之间传递异步消息的软件。发送消息时,软件把消息存储在发送者指定的位置并且立即确认收到。消息发送者称为生产者,存储消息的位置称为目的地。稍后的某个时刻,对特定目的地中存储的消息感兴趣的任何软件组件可以检索当前存储的消息,接收消息的软件组件称为消息消费者。
消息模型
消息模型(messaging model)就是涉及若干发送者和消费者时传递消息的方式。Java EE中有两种标准化的流行的消息模型:点对点消息和发布/订阅消息。
1.点对点
在PTP架构中,单一消息从单一生产者(点A)传递到单一消费者(点B)。PTP消息目的地被称为队列(queue)。注意,PTP不保证按照任何特定顺序传递消息——队列这个术语的象征意义超过现实意义。此外,如果消息潜在的接收者超过个,则随机选择一个接收者,消息只能被“找到”一次。
2.发布-订阅
发布-订阅消息非常像在因特网新闻组上发帖。单生产者发送的消息被任意数量的消费者接收,这些消费者当时正好连接到消息目的地。与因特网上发帖类似的是,此模型中的消息目的地被称为主题(topic),而消费者被称为订阅者(subscriber)。
第三种称为请求-回应的模型。在这种模型中,我们向消息接收者发送足够的信息,以便它们“叫我们返回”。这称之为覆盖模型(overlay model),因为它通常在PTP或发布-订阅模型上实现。
例如在PTP模型中,发送者指定用于回应的队列(在JMS中称为回应[reply]队列)以及发出和收入的消息共享唯一ID (在JMS中称为关联ID[correlation ID])。接收者收到消息并且把回应发送到回应队列,并且复制关联ID。发送者从回应队列接收此消息并且通过匹配关联ID确认哪条消息接收到了回应。JMS提供使用Java访问MOM的统一标准方式, 因此是产品专有API的替代方式。
在Java EE环境中组件之间的通信有同步和异步两种方式,同步是指调用者和调用目标必须出现以便通信成功完成,也意味着调用者在处理之前必须等待目标完成服务请求 。
举例来说, 当你(调用者)给某个人打电话就是在进行同步通信。但是,如果你找的人(调用目标)不在怎么办?如果可能,你会留下语音信箱消息。通过存储你的消息以便接收者可以稍后接听并回应。语音信箱服务使异步通信成为可能。面向消息的中间件(message-oriented middleware, MOM)通过与语音信箱服务非常类似的方式支持消息——作为消息发送者和接收者之间的中间人,以让它们不必同时可用。
面向消息的中间件
面向消息的中间件是支持在系统组件之间传递异步消息的软件。发送消息时,软件把消息存储在发送者指定的位置并且立即确认收到。消息发送者称为生产者,存储消息的位置称为目的地。稍后的某个时刻,对特定目的地中存储的消息感兴趣的任何软件组件可以检索当前存储的消息,接收消息的软件组件称为消息消费者。
消息模型
消息模型(messaging model)就是涉及若干发送者和消费者时传递消息的方式。Java EE中有两种标准化的流行的消息模型:点对点消息和发布/订阅消息。
1.点对点
在PTP架构中,单一消息从单一生产者(点A)传递到单一消费者(点B)。PTP消息目的地被称为队列(queue)。注意,PTP不保证按照任何特定顺序传递消息——队列这个术语的象征意义超过现实意义。此外,如果消息潜在的接收者超过个,则随机选择一个接收者,消息只能被“找到”一次。
2.发布-订阅
发布-订阅消息非常像在因特网新闻组上发帖。单生产者发送的消息被任意数量的消费者接收,这些消费者当时正好连接到消息目的地。与因特网上发帖类似的是,此模型中的消息目的地被称为主题(topic),而消费者被称为订阅者(subscriber)。
第三种称为请求-回应的模型。在这种模型中,我们向消息接收者发送足够的信息,以便它们“叫我们返回”。这称之为覆盖模型(overlay model),因为它通常在PTP或发布-订阅模型上实现。
例如在PTP模型中,发送者指定用于回应的队列(在JMS中称为回应[reply]队列)以及发出和收入的消息共享唯一ID (在JMS中称为关联ID[correlation ID])。接收者收到消息并且把回应发送到回应队列,并且复制关联ID。发送者从回应队列接收此消息并且通过匹配关联ID确认哪条消息接收到了回应。JMS提供使用Java访问MOM的统一标准方式, 因此是产品专有API的替代方式。
相关文章推荐
- java EJB 加密与解密原理的一个例子
- 部署Java在服务器端的EJB组件的方法
- Java中BEAN与EJB的区别浅析
- 各种概念POJO、JAVABEAN、DAO、DTO、PO、VO、BO、SSH、EJB
- EJB技术,够重!够杂!
- EJB
- JAVA BEAN 与 EJB 区别
- EJB调用 jndi获得session
- 中间件(EJB)学习路之一——步履维艰
- Spring+struts+ejb(一)
- 通过注解方式注入并使用其他EJB或者服务
- Remote Access
- Hibernate4之事务机制
- Before summer holiday
- 今天第一次写博客,欢迎各位IT大哥大姐们多多关照!!
- 在BEA WebLogic Server上开发应用程序的20条技巧
- 统一权限系统URight1.5
- Eclipse开发EJB3
- jsp编码规范
- J2EE的13种核心技术(二)