1 / 88

本课件仅用于北京航空航天大学计算机学院的教学; 本课件修改采用了一些网络资源(论文、研究报告、技术报告等),在采用的时候并没有准确标注引用信息。

声明. 本课件仅用于北京航空航天大学计算机学院的教学; 本课件修改采用了一些网络资源(论文、研究报告、技术报告等),在采用的时候并没有准确标注引用信息。. 第 4 章 Message-Driven Bean. 北航计算机学院 linxl@buaa.edu.cn 2006 年 2 月 1 日. 内容列表. 4.1 Message 4.2 MOM 4.3 JMS 4.4 MDB 4.5 小结. 4.1 Messaging. Messaging

travis
Download Presentation

本课件仅用于北京航空航天大学计算机学院的教学; 本课件修改采用了一些网络资源(论文、研究报告、技术报告等),在采用的时候并没有准确标注引用信息。

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 声明 • 本课件仅用于北京航空航天大学计算机学院的教学; • 本课件修改采用了一些网络资源(论文、研究报告、技术报告等),在采用的时候并没有准确标注引用信息。

  2. 第4章 Message-Driven Bean 北航计算机学院 linxl@buaa.edu.cn 2006年 2 月 1 日

  3. 内容列表 • 4.1 Message • 4.2 MOM • 4.3 JMS • 4.4 MDB • 4.5 小结

  4. 4.1 Messaging • Messaging • Messaging is a method of communication between software components or applications • Messaging enables distributed communication that is loosely coupled • Message • Collection of data sent from one application to another • A message is a string of data or a null string sent or received by a task

  5. Disadvantages of RPC • RPC方法忽略了: • 延迟(网络、应用程序) • 部分失败和并发 • … • RPC让通信更容易,但代价是: • 请求/响应通信 • 针对每一个请求,我们期望一个响应,阻塞调用者线程直到接收到响应(或者响应超时) • 代理和Stub强绑定 • 强绑定和类型一致使得编程容易,但强绑定和类型一致使得变化非常困 • RPC暴露行为

  6. Disadvantages of CORBA • All CORBA messages are synchronous • Over-reliance on inheritance: inflexible implementation • Use of a IDL (Interface Definition Language) adds complexity

  7. Disadvantages of RMI • Synchronous communication: • Calling process blocks until there is a response • Tightly coupled: • Client must find recipients, and know method arguments • No persistence • A lot of connections can be difficult to scale

  8. 解决方案 • 系统间通过管道通信 • 管道有逻辑地址 • 发送应用程序将消息放到管道中,然后处理其它工作 (“fire-and-forget”) • 管道将消息排队直到被接收应用程序使用(FIFO)

  9. 消息传递系统举例 • 文件传输 • 消息: 文件 • 目的地: 文件系统目录 • 运行环境: 操作系统的文件系统 • 数据库 • 消息: 数据集 • 目的地: 数据库表 • 运行环境: 数据库

  10. JMS / MSMQ • 消息: byte, text, object, stream … • 目的地: 队列(point -to-point), 主题(publish-subscribe) • 运行环境: MOM环境支持 • SOAP • 消息消息: SOAP XML format • 目的地: (取决于传送方式) • 运行环境:...

  11. 为什么要使用消息传递 • (1) 灵活性 • (2) 可缩放性 • (3) 高负载的平缓释放 • (4) 集成性

  12. (1) 灵活性 • 更多的数据流选择 • Fire-and-forget, multicast, disconnected, load forget, balancing, flow control, priority routing 等. • 多粒度的处理逻辑多粒度的处理逻辑 • Routing Slip • Content-Based Router • 更容易维护和变化更容易维护和变化 • 消息格式的变化不需要重新编译不相关的客户端 • 消息流的传递不需要修改中间结点 • 避免并发死锁 (和RPC响应阻塞相比)

  13. (2) 可缩放性 • 竞争消费– 多个处理端可以读取同一队列 • 发送端不需要进行任何改变 • 粗粒度消息可以使处理端成为“无状态”

  14. (3) 高负载的平缓释放 • 队列中存储的消息将会等待被处理 • 消息处理端或消费者会经可能快的取走消息 • 如果处理端阶段无法继续: • 我们可以增加更多的处理端 • 或者等待峰值负载被释放

  15. (4) 集成性 • 消息传递不需要一致的类型系统 • 消息就是类型 • 消息传递可以连接多个系统 (.NET,J2EE,etc.) • XML消息非常适合此类场景 • 其它数据表现形式也可用 (CSV, 文本) • 消息传递的灵活性使得集成更容易

  16. 消息传递面临的挑战 • 使用队列来通信,而不是对象 • 双向通信需要至少2个队列:一个用于请求消息,另一个用于响应个队列 • 不存在会话状态 • 时序– 消息的到达可能是无序的 • 同步通信需要进行更多的设计 • 不存在对象标识 • 消息进入队列,而不是对象 • 不符合通常的客户/服务器模式 • 类似“生产者消费者”,甚至于“点对点”通信

  17. 小结 • 消息传递提供了另一种通信手段 • 消息传递具有灵活性 • 消息传递具有可缩放性 • 消息传递可以在多个管道上操作 • 消息传递需要程序员考虑的更多 • 在消息交换模式中,有很多不同的交换模式存在

  18. 4.2 MOM (Message Oriented Middleware) • MOM指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。 • 通过提供消息传递和消息排队模型,它可在分布环境下扩展进程间的通信,并支持多通讯协议、语言、应用程序、硬件和软件平台。

  19. 4.2.1 MOM Overview • Communication using messages • Messages stored in message queues • Optional message server (broker) decouples client and server

  20. 消息= 消息头(路由信息) + 消息正文 • 支持异步发送 • 不指定格式(松散约束) • 目的地= 命名的消息存储仓库 • 解耦合消息的产生者与消费者 • 便于重定向或者改变调用流程 • 运行环境= 多样化的发送方式 • 服务质量: Reliable, transacted, prioritized, deadline-based • 通信方式: publish-and-subscribe等. • 消息交换模式 • Request-response, fire-and-forget, request-async response

  21. Message Queueing Technology • Store-and-forward • Transactional messaging • Cluster-based storage Messaging —— event-driven communication layer that allows applications to transfer information securely and reliably

  22. Tasks of a Message Broker • Message transformation (quasi “marshalling”) & format dictionary • Message routing and transport • Message flow control & rules engine • Message warehouse (for “store and forward”) • Adapters • Centralized system management

  23. Advantages: Scalable Architecture • Simplistic RPC or CORBA frameworks: M*N sockets • MOM frameworks: M+N sockets

  24. Advantages - Synchronous vs. Asynchronous Messages • Most Distributed OLTP (e.g., EJB containers/RMI) require synchronous messaging • Synchronous messaging increases client latency • Synchronous messaging does not scale well • Synchronous messaging tightly couples the client to the server • E.g.: Legacy batch systems are difficult to couple with On-Line Transaction Processing (OLTP) systems unless you use asynchronous messaging • J2EE JMS provides asynchronous messaging to overcome these problems

  25. Advantages——通讯程序可在不同的时间运行 • 消息放入适当的队列时,目标程序甚至根本不需要正在运行 • 即使目标程序在运行,也不意味着要立即处理该消息 • Advantages—对应用程序的结构没有约束 • 在复杂的应用场合中,通讯程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,甚至是上述多种方式的组合。 • 多种通讯方式的构造并没有增加应用程序的复杂性。

  26. Messaging Models / Domains: Publish & Subscribe: Topics Point-to-Point: Queues

  27. 4.2.2 点对点消息传送 • 在点对点消息传送中,消息生成方被称为发送者,而使用方则被称为接收者。 • 它们通过被称为队列的目标来交换消息:发送者生成队列中的消息;而接收者则使用队列中的消息

  28. 例:简单点对点消息传送

  29. 复杂点对点消息传送

  30. 特点: • 多个生成方可向一个队列发送消息。生成方可共享连接或使用不同连接,但它们均可访问同一队列 • 多个接收者可使用一个队列中的消息,但每条消息只能由一个接收者使用。所以,Msg1、Msg2 和 Msg3 由不同接收者使用 • 接收者可共享连接或使用不同连接,但它们均可访问同一队列

  31. 特点: • 发送者和接收者之间不存在时间上的相关性:客户端发送一条消息后,无论接收者是否正在运行,都能取出该消息 • 可在运行时动态添加和删除发送者和接收者,这样,即可根据需要扩展或收缩消息传送系统 • 消息在队列中的放置顺序与发送顺序相同,但它们的使用顺序则取决于消息失效期、消息优先级以及使用消息时是否使用选择器等因素

  32. 优势: • 由于多个接收者可使用同一队列中的消息,因此如果接收消息的顺序无关紧要,那么您可以平衡消息使用负载。 • 要发送到队列的消息始终保留,即使没有接收者也是如此。 • Java 客户端可使用队列浏览器对象检查队列内容。然后,它们可以根据通过该检查所获得的信息来使用消息。也就是说,虽然使用模型一般为 FIFO (first in, first out,先进先出),但如果使用者知道要使用哪些消息,即可使用消息选择器来使用未处于队列最前方的消息。管理客户端也可以使用队列浏览器来监视队列的内容。

  33. 4.2.3 发布/ 订阅消息传送 • 简单发布 / 订阅消息传送

  34. 复杂发布/ 订阅消息传送

  35. 特点 • 多个生成方可向一个主题发布消息。生成方可共享连接或使用不同连接,但它们均可访问同一主题。 • 多个订户可使用一个主题中的消息。订户可检索发布到一个主题中的所有消息,除非它们使用选择器过滤掉消息或消息在使用之前已过期。 • 订户可共享连接或使用不同连接,但它们均可访问同一主题。 • 长期订户可能处于活动状态,也可能处于非活动状态。在它们处于非活动状态时,代理会为它们保留消息。

  36. 特点 • 可在运行时动态添加和删除发布者和订户,这样,即可根据需要扩展或收缩消息传送系统。 • 消息发布到主题的顺序与发送顺序相同,但它们的使用顺序则取决于消息失效期、消息优先级以及使用消息时是否使用选择器等因素 • 发布者与订户之间存在时间上的相关性:主题订户只能使用在它创建订阅后发布的消息

  37. 4.2.4 MOMA • Message Oriented Middleware Association (MOMA) "is an international not-for-profit association of vendors, users, and consultants dedicated to promoting the use of messaging to provide multi-platform, multi-tier message passing and message queuing services for distributed computing architectures" • MOMA is not a standard-making body, but there are claims that it should be

  38. MOM-vendors : • Verimation's product called "VCOM" , 1988 • Peerlogic's "PIPES" • Horizon Strategies' "Message Express“ • System Strategies' "ezBridge“ • BEA's MessageQ ( Digital's DECmessageQ ) • IBM's MQSeries • Bull's Flowbus • Apertus' MQ Edition • Microsoft’s MSMQ • Talaria’s Smartsocket • Etc…

  39. MOM-vendors : • 东方通TongLINK/Q , 1993 • 黎明网络iSwitch, 1998(?) • 金蝶iMTS消息中间件,2001年 • 中创消息中间件InforBus/Q , 2001 • Etc…

  40. Some common properties of MOM (1) • Messaging is an asynchronous method of passing information between programs • Queuing is a method of passing information indirectly through message queues • Online messaging is in real time, with message delivery typically occurring in seconds or even sub-seconds • Applications are isolated from communication networks which makes applications simpler, shields them from network changes, and provides greater network independence

  41. Some common properties of MOM (2) • Looser coupling between application elements • Fewer communication channels between computer systems are easier to manage and more efficient • Messages can be persistent and non-persistent • Contents of messages can automatically be translated according to recipients needs

  42. Products from different vendors (e.g., IBM's MQSeries, BEA's DECmessageQ, Verimation's VCOM ) have different APIs and don't easily interoperate with one another and each vendor's products employ proprietary location (directory, naming, and security) services.

  43. 4.3 JMS • 是SUN提出的旨在统一各种MOM系统接口的规范 • Java 消息传送服务规范最初是为了允许 Java 应用程序访问现有的 MOM 系统而开发的。 • 被许多现有的 MOM 供应商采用并且已经凭借自身的功能实现为异步消息传送系统。

  44. 4.3.1 JMS Overview • JMS is an API for asynchronous, transacted transacted message production,distribution, and delivery • Designed by Sun and Partners

  45. JMS is a set of interfaces and associated semantics that define how a JMS client accesses the facilities of an enterprise messaging product

  46. JMS Defines an Architecture That Includes: • JMS Provider • JMS APIs • ConnectionFactory, Destination • JMS Client • Producer, Consumer • Two Messaging styles • Point-to-Point • Publish/Subscribe • Definable Quality of Service • Reliability levels, transactions, priorities

  47. JMS – Message Structure • Header message delivery fields • Delivery Mode (Persistent, Non-Persistent) • Priority, MessageID, CorrelationID, Type, Destination, Time-stamp, Replyto, Redelivered, Expiration • Properties - application defined property values • Body – data payload can be of 5 types: • Bytes - Opaque, arbitrary data • Objects - Serialized Java objects • Map - Name-Value pairs • Stream - Sequences of typed data primitives • Text - Text (optionally including XML) string data

  48. Loosely coupled: • Producer doesn't need to know consumers, or consumer method arguments • Reliable: • Message is stored until it can be delivered • Asynchronous • Producer is not blocked, Consumer does not have to be available

More Related