Java消息系统介绍

在这篇文章中,我将会讨论面向消息的中间件(Message Orientated Middleware) 以及如何通过JMS来实现。另外,我还将讨论适用于使用JMS的典型用例,以及用于讨论消息传递解决方案(如发布者/发送方,目的地/主题/队列, 订阅者/接收者)的不同术语。我将介绍两种消息拓扑:点对点和发布订阅。

数据访问层

在Java EE应用的典型架构中,数据访问层有很多和数据存储层通信的技术,比如Java Persistence API(JPI), Java Connector Architecture(JCA),这些技术将应用程序连接到了企业信息系统(EIS)和Java消息服务系统(JMS)

JMS用来做什么?

JMS用于在分布式系统中通过松耦合,异步,可伸缩性和安全的方式传递消息。应用程序通过以消息为导向的中间件发送和接收消息。 异步。意味着消息的发送方和接收方不需要同时与消息队列交互。因此,接收方可以在消息发送后的某个时间接收消息。

松耦合。 接收方和发送方相互不可见。

可伸缩。意味着系统的不同部分可以以不同的速率增长,并响应应用的负载。例如,在一个站点上突然出现了大量的活动导致通过中间件发送的消息极具增加,可以进行自动扩展。这样增加了系统的健壮性,否则很难应对这种突然增大的负载,应用程序可能会出现问题,或者直接挂掉了。

什么时候使用JMS?

依赖与使用场景来使用JMS,但是通常,至少会有以下一种情况。

应用程序应该能够在不需要立即响应消息的情况下发送消息。也许根本就不需要发送消息的响应或者就是单向通信。

发送方不依赖接收方的接收,因此很容易替换接收方。归结于需要将应用程序的部分解耦。 当接收方挂掉,应用程序应该能够继续保持工作,这是健壮性方面的考虑。

术语

在讨论JMS时,有一些有用的术语可以帮助我们传达我们的意图。

destination. destination是消息发送的位置,并被称为topic或queue。这通常在JMS中定义为字符串值。应该给目的地提供表示其功能的名称。

JMS系统有publisher或sender。这是消息来源的地方,也是消息终止的订阅者或接收者。这里使用的术语依赖于消息传递系统的拓扑,它可以是点到点,也可以是发布/订阅。

消息有一个有效载荷(payload),它包含了接收者提取和处理的有用信息。消息类型可以是文本、二进制、流、对象或属性映射。

点到点的消息拓扑结构

在点对点设置中,消息的来源被称为发送方,而目的地被称为队列。这里消息被发送到一个目的地,只有一个消息的实例被接收方接收。如果接收方关闭,则消息将在队列中保存,直到接收方重新启动并再次运行。

发布订阅消息拓扑结构

在发布/订阅设置中,消息的来源被称为发布者,目标被称为主题。在这里,许多订阅者可以订阅一个主题,每个订阅者都接收到消息的一个实例。因此,一个消息被发送给许多等待的订阅者。如果订阅服务器关闭,它将不会接收到消息,当它再次运行时。

更多参考

eis系统 java_Java消息系统介绍 - marvin_vov的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. 字节增强java_java字节增加 - longjunping的个人空间 - OSCHINA - 中文开源技术交流社区...

    // 添加数据 public byte[] insertdata(char id, String swapdata, byte[] resultdata) throws UnsupportedEnco ...

  2. 诸葛java_java - 诸葛_子房的个人空间 - OSCHINA - 中文开源技术交流社区

    前端: 1.HTML5新特性 2.js闭包 3.布局(盒子模型) 4.js原型链 Java: 1.基本数据类型 2.String为什么不能被继承,String与StringBuilder,String ...

  3. 服务器图文消息发送规则,群发图文规则 - CurtainRight的个人空间 - OSCHINA - 中文开源技术交流社区...

    2.上传图文接口 内容信息对比: 注意:除了群发图文之外,其余的图文消息都是没有Content,所以都是自己写页面,然后通过URL打开新的页面,那么你的图片就不能访问微信服务器上的图片.因为现在未经授 ...

  4. linux系统上安装toma,Linux-tar - osc_btnnkvs0的个人空间 - OSCHINA - 中文开源技术交流社区...

    1. tar简介 https://zh.wikipedia.org/wiki/Tar Unix和类Unix系统上的压缩打包工具,可以将多个文件合并为一个文件,打包后的文件名亦为"tar&qu ...

  5. 树莓派 打印服务器 系统,树莓派之打印服务器篇 - osc_964dc088的个人空间 - OSCHINA - 中文开源技术交流社区...

    到处看到树莓派开箱的文章,开了又咋整,总的有点用吧,我很早之前买了一个 Raspberry Pi B+很老了,一直在家里吃灰,现在小孩上小学了有许多要打印的东西,我买了一台二手的HP1020,在家打的 ...

  6. 报送数据标准校验java_Java:数据校验 - osc_gaqp1a2z的个人空间 - OSCHINA - 中文开源技术交流社区...

    在后台开发过程中,需要对参数进行校验. validation bean 是基于JSR-303标准开发出来的,使用注解的方式实现,是一套规范,可以实现参数的校验. Hibernate Validator ...

  7. 如何查看suse系统服务器sn,suse 配置 - sncder的个人空间 - OSCHINA - 中文开源技术交流社区...

    系统安装: 安装阶段,遇到网卡选项,需设置所有网卡为dhcp或static,否则,系统安装完毕后,ifconfig会看不到网卡 网络: 重启:rcnetwork restart 设置DNS: /etc ...

  8. 发送邮件 空格 java_java发送邮件 - 困觉的曼巴er的个人空间 - OSCHINA - 中文开源技术交流社区...

    public class SendEmail { /** * 做该例子出现的异常 * 1.Exception in thread "main" java.lang.NoClassD ...

  9. 拒绝java_java拒绝策略 - V丶zxw的个人空间 - OSCHINA - 中文开源技术交流社区

    java拒接策略 // 拒绝策略需要实现的接口 // 如果我们想实现自己的拒绝策略实现这个接口就行了 public interface RejectedExecutionHandler { // 只有 ...

最新文章

  1. linux盘符改名字,Linux 下powerpath共享磁盘名称不一致处理方法
  2. 神经网络之激活函数面面观
  3. Cisco路由器安全配置命令
  4. 40K刚面完Java岗,这些技术必须掌握
  5. Android-即时通训
  6. php如何判断是否关注,微信公众号判断用户是否已关注php代码解析
  7. 清除浮动(HTML、CSS)
  8. 【LeetCode】【字符串】题号:*541. 反转字符串 II
  9. [原创]jQuery的this和$(this)
  10. 基于arduino WS2812b RGB灯带控制程序一
  11. LDA(Latent Dirichlet Allocation)主题模型
  12. C语言书籍阅读-读书笔记--《C专家编程》
  13. Java——Json语法介绍与使用(详细介绍)
  14. 云端卫士助力运营商实现DDoS安全业务的统一运营
  15. Android8怎么格式化内存卡,安卓手机怎么格式化存储内存 Android手机SD内存卡格式化方法...
  16. Linux上 如何查找yum安装包所缺缺少的依赖包及报错处理
  17. 思路清晰的软光栅小引擎和四元数结合案例
  18. 谈谈UG二次开发程序入口
  19. 【代码精读】CVP-MVSNet代码结构详细分析
  20. WIN7下Virtualbox虚拟Ubuntu共享文件夹设置

热门文章

  1. 【JAVA工具类】金额与汉字大小写的转换 金额转换
  2. 文档矫正(计算机视觉实验)
  3. 密码学笔记——维吉尼亚密码
  4. 【Vue学习总结】22.使用Mint UI的infinite-scroll实现上拉分页加载
  5. 弘辽科技:拼多多这样提升销量才能加权
  6. seo日常工作表_SEO日常工作内容主要有哪些
  7. Azure DevOps Server(TFS) 客户端分析
  8. 【程序员才懂的梗】全程高能 爆笑硬核 你中了几个 | 程序员的日常 搞笑瞬间
  9. 【算法】跑ORB-SLAM遇到的问题、解决方法、效果展示(环境:Ubuntu18.04+ROS melodic)
  10. CentOS上安装Docker及docker常用命令