EJB——消息和消息驱动bean(二)

       大多数MDB都是实现JMS接口(比如javax.jms.MessageListener)和使用Java组件(比如javax.jms.Message)的JMS消息消费者。
       在Java EE环境中组件之间的通信有同步和异步两种方式,同步是指调用者和调用目标必须出现以便通信成功完成,也意味着调用者在处理之前必须等待目标完成服务请求 。
举例来说, 当你(调用者)给某个人打电话就是在进行同步通信。但是,如果你找的人(调用目标)不在怎么办?如果可能,你会留下语音信箱消息。通过存储你的消息以便接收者可以稍后接听并回应。语音信箱服务使异步通信成为可能。面向消息的中间件(message-oriented middleware, MOM)通过与语音信箱服务非常类似的方式支持消息——作为消息发送者和接收者之间的中间人,以让它们不必同时可用。
面向消息的中间件
       面向消息的中间件是支持在系统组件之间传递异步消息的软件。发送消息时,软件把消息存储在发送者指定的位置并且立即确认收到。消息发送者称为生产者,存储消息的位置称为目的地。稍后的某个时刻,对特定目的地中存储的消息感兴趣的任何软件组件可以检索当前存储的消息,接收消息的软件组件称为消息消费者。

无标题.png
消息模型
        消息模型(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的替代方式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值