`
zhaomengsen
  • 浏览: 207297 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

深入掌握JMS(一):JSM基础

    博客分类:
  • jms
阅读更多

1. JMS基本概念
     JMS(Java Message Service) 即Java消息服务。它提供标准的产生、发送、接收消息的接口简化企业应用的开发。它支持两种消息通信模型:点到点(point-to-point)(P2P)模型和发布/订阅(Pub/Sub)模型。P2P 模型规定了一个消息只能有一个接收者;Pub/Sub 模型允许一个消息可以有多个接收者。
    对于点到点模型,消息生产者产生一个消息后,把这个消息发送到一个Queue(队列)中,然后消息接收者再从这个Queue中读取,一旦这个消息被一个接收者读取之后,它就在这个Queue中消失了,所以一个消息只能被一个接收者消费。
    与点到点模型不同,发布/订阅模型中,消息生产者产生一个消息后,把这个消息发送到一个Topic中,这个Topic可以同时有多个接收者在监听,当一个消息到达这个Topic之后,所有消息接收者都会收到这个消息。
     

简单的讲,点到点模型和发布/订阅模型的区别就是前者是一对一,后者是一对多。

2. 几个重要概念
   Destination:消息发送的目的地,也就是前面说的Queue和Topic。创建好一个消息之后,只需要把这个消息发送到目的地,消息的发送者就可以继续做自己的事情,而不用等待消息被处理完成。至于这个消息什么时候,会被哪个消费者消费,完全取决于消息的接受者。
    Message:从字面上就可以看出是被发送的消息。它有下面几种类型:
        StreamMessage:Java 数据流消息,用标准流操作来顺序的填充和读取。
        MapMessage:一个Map类型的消息;名称为 string 类型,而值为 Java 的基本类型。
        TextMessage:普通字符串消息,包含一个String。
        ObjectMessage:对象消息,包含一个可序列化的Java 对象
        BytesMessage:二进制数组消息,包含一个byte[]。
        XMLMessage:  一个XML类型的消息。
    最常用的是TextMessage和ObjectMessage。
   Session:与JMS提供者所建立的会话,通过Session我们才可以创建一个Message。
   Connection:与JMS提供者建立的一个连接。可以从这个连接创建一个会话,即Session。
   ConnectionFactory:那如何创建一个Connection呢?这就需要下面讲到的ConnectionFactory了。通过这个工厂类就可以得到一个与JMS提供者的连接,即Conection。
   Producer:消息的生产者,要发送一个消息,必须通过这个生产者来发送。
   MessageConsumer:与生产者相对应,这是消息的消费者或接收者,通过它来接收一个消息。
   前面多次提到JMS提供者,因为JMS给我们提供的只是一系列接口,当我们使用一个JMS的时候,还是需要一个第三方的提供者,它的作用就是真正管理这些Connection,Session,Topic和Queue等。

    通过下面这个简图可以看出上面这些概念的关系。

  ConnectionFactory---->Connection--->Session--->Message
  Destination + Session------------------------------------>Producer
  Destination + Session------------------------------------>MessageConsumer

 
    那么可能有人会问: ConnectionFactory和Destination 从哪儿得到?
    这就和JMS提供者有关了. 如果在一个JavaEE环境中, 可以通过JNDI查找得到, 如果在一个非JavaEE环境中, 那只能通过JMS提供者提供给我们的接口得到了.

 

分享到:
评论
1 楼 6420285 2016-05-30  
你的文章很棒,很多地方讲的通俗易懂,非常感谢。
                     

相关推荐

    JSM567 JSM578 主控 硬盘盒固件更新以及量产工具 修改硬盘休眠时间

    "JMS567_578_设置休眠分位操作步骤.xlsx"很可能是一个详细的指南,列出了如何修改这些主控芯片硬盘盒的休眠时间的步骤。Excel文件通常用于组织和展示步骤,表格形式易于理解和执行。用户应当按照文件中的指示进行...

    jsm2018:JSM 2018的演示文稿

    【jsm2018: JSM 2018的演示文稿】是一次重要的统计学会议,其中涵盖了丰富的学术讨论和分享。这个压缩包文件包含了2018年在加拿大温哥华举行的 Joint Statistical Meetings (JSM 2018) 的演讲资料。JSM 是全球最大的...

    JSM2018_ecosystem:JSM 2018“用于数据科学统计教育的新兴生态系统”

    内容:JSM 2018温哥华会议212 幻灯片和演讲者信息 时间:2018年7月30日星期一,2:00 PM-3:50 PM 地点:温哥华会议中心 缩短的URL 重定向到此处。 下午2:05版本控制:您的痛苦得到了收获-詹妮弗·布赖恩(Jennifer...

    Presentations:JSM,InfoVis等的演示

    标题中的"JSM"指的是JavaScript Machine (JS Machine) 或者可能是Joint Statistical Meetings,这是一个大型的统计学会议。"InfoVis"则是Information Visualization的缩写,指的是数据可视化的领域,它涉及将复杂的...

    jsm_2018:JSM 2018演讲的神经影像再现性和R

    【标题】"jsm_2018: JSM 2018演讲的神经影像再现性和R"指的是在2018年JavaScript Meetup (JSM) 上的一个演讲,主题聚焦于神经影像的再现性研究,并且使用R语言进行数据分析和可视化。这场演讲可能深入探讨了如何使用...

    JMS583 USB PCIE 桥接芯片方案

    JMS583是一款由JMicron科技公司设计的高效能USB到PCI Express (PCIe)桥接芯片,旨在为电子设备提供一种灵活的方式来实现高速数据传输。这款芯片能够将USB接口转换成PCIe接口,以充分利用PCIe的高带宽特性,适用于...

    JMS583方案原理图参考手册

    JMS583是一款专为USB 3.1 Gen 2与PCIe Gen3x2 (M.2)接口转换设计的高性能桥接芯片,它采用QFN64(8x8)封装形式,提供了高效的信号转换和数据传输能力。在理解这个方案时,我们需要深入探讨以下几个关键知识点: 1....

    JMS578多达13个固件打包升级工具包 可修改休眠时间

    两个固件升级工具 其中一个是量产工具可以修改休眠时间和盒子信息 TRIM检查工具 有几个固件版本为全网首发,别人没有的资源 固件列表: JMS578_00.01.00.05 JMS578_00.02.00.03 JMS578_00.02.00.09 JMS578_00.02....

    jsm-show-post-meta:JSM的Show Post Metadata(WordPress插件)

    JSM的“显示帖子元数据”插件在帖子编辑页面底部的一个metabox中显示所有帖子元(也称为自定义字段)键及其未序列化的值。 没有插件设置-只需安装并激活插件即可。相关插件(即类别和标签)需要提升您的社交和搜索...

    JMS577主控通刷固件

    JMS577是一种常见的硬盘主控芯片,负责管理硬盘的读写操作、错误校验以及电源管理等功能。 描述中提到的问题是,当希捷移动硬盘更换了硬盘后,如果出现指示灯不亮的情况,通常意味着主控芯片无法正常识别或驱动新的...

    JMS561主控芯片 硬盘盒固件更新以及量产工具 修改硬盘休眠时间

    JMS561主控芯片是应用于硬盘盒中的一个重要组件,负责管理硬盘的读写操作以及电源管理等关键功能。在移动硬盘领域,它扮演着至关重要的角色,因为移动硬盘通常需要在不同设备间频繁传输数据,同时也需要考虑能耗和...

    数据融合matlab代码-JSM_SVM_MLL:JSM_SVM_MLL

    数据融合matlab代码JSM_SVM_MLL 编码是针对论文“ Gao,Q.和Lim,S.,2019. Matlab的实现”。该方法用于超光谱图像分类的支持向量机和联合稀疏模型​​的概率融合。GIScience和遥感。(DOI: 10.1080 / 15481603....

    硬盘盒JMS578更新固件 休眠修改

    JMS578是一款常见的USB-to-SATA桥接芯片,广泛用于硬盘盒和移动硬盘设备,提供USB接口与内置硬盘之间的数据传输。 更新固件的主要目的是为了提升硬件性能、修复已知问题、增强兼容性或添加新功能。对于硬盘盒来说,...

    jsm-list-pages-shortcode:JSM的列表页面简码(WordPress插件)

    JSM的列表页面简码插件名称JSM的列表页面简码概括[list-pages],[sibling-pages]和[child-pages]简码可列出内容中的页面。 稳定版1.0 需要PHP 7.0或更高版本需要WordPress 4.5或更高版本经过WordPress测试5.7.1 贡献...

    jsm-show-user-meta:JSM的显示用户元数据(WordPress插件)

    JSM的显示用户元数据 插件名称 JSM的显示用户元数据 概括 在用户编辑页面的metabox中显示所有用户meta(又名自定义字段),这是调试用户meta问题的绝佳工具。 稳定版 1.3.0 需要PHP 7.0或更高版本 需要WordPress ...

    JSM-activeMQ

    描述中提到,这是一个小型的Java项目示例,用于演示如何在ActiveMQ的基础上构建点对点消息传递。点对点通信模式是一种通信架构,其中每个消息只由一个生产者创建,并且只有一个消费者接收。这种模式通常用于应用程序...

    shiny-jsm18:JSM 2018上“ Shiny Essentials”研讨会的材料

    Shiny是一个R软件包,可轻松从R直接构建交互式Web应用程序。您可以在网页上托管独立应用程序,也可以将其嵌入R Markdown文档中或构建仪表板。 本短期课程将向您介绍如何使用Shiny,响应式编程来构建Web应用程序和...

    inherit-featured-image:JSM的继承父精选图像(WordPress插件)

    JSM的继承父精选图像插件名称JSM的继承父精选图像概括从“帖子”,“页面”或“自定义帖子类型”的父,祖父母,曾祖父母等继承特征图像。 稳定版2.0.0 需要PHP 7.0或更高版本需要WordPress 4.5或更高版本经过...

    硬盘盒电路图JMS567QFN

    硬盘盒电路图中的JMS567QFN是一种集成电路芯片,通常用于硬盘盒或其他存储设备中,用于实现与计算机主机之间的高速数据传输和供电管理。JMS567QFN芯片符合USB供电规范,支持多种硬盘接口,如SATA、SATA II和SATA III...

Global site tag (gtag.js) - Google Analytics