JMS 支持两类消息传送模型:点对点模型和发布/订阅模型。又称这些消息传送模型为消息传送域。点对点模型和发布订阅模型分别缩写为p2p和Pub/Sub。
发布订阅模型用于一对多消息广播,点对点模型用于一对一的消息传送。

点对点消息传送模型允许jms客户端通过队列来同步和异步发送、接受消息,点对点模型中,消息生产者成为发送者(sender),而消息消费者成为接受者(receiver)。

点对点模型是一个基于拉取或者轮训的消息传送模型,是主动从队列中请求消息,而不是自动的将消息推送到客户端。

点对点模型的特点是:

1.发送到队列的消息被某一个接收者接收,即使有多个接收者侦听同一个消息。

2.点对点支持异步“即发即弃”

3.支持同步请求/应答消息传送方式

4.点对点消息传送模型比发布/订阅模型具有更强的耦合性,发送者通常知道消息将被如何使用,而且知道谁将接受该消息

5.点对点模型支持负载均衡,它允许多个接收者侦听同一个队列,并且以此来分配负载

6.队列浏览器允许客户端在消费其他消息之前查看队列内容

发布/订阅中消息被发布到一个叫做主题的虚拟通道中,消息生产者成为发布者(publisher),消息消费者被成为订阅者(subscriber)

使用发布/订阅模型发布一个主题消息,能够被多个订阅者接受,有时候也被成为广播消息,每个接收者接收到的是消息的一个副本,发布订阅是基于推送的模型,其中自动的向消费者广播,无需轮训或者请求查找主题

发布订阅模型的特点:

1.发布订阅模型比P2P模型的去耦能力更强

2.非持久订阅者,他们只是在主动侦听主题时才能接收消息

3.持久订阅者将接收发布每个消息的副本,即便发布消息时处于离线状态.

           4.另外还有动态持久订阅者和受管的之久订阅者

JSM 学习(一)的更多相关文章

  1. Hadoop日记Day17---计数器、map规约、分区学习

    一.Hadoop计数器 1.1 什么是Hadoop计数器 Haoop是处理大数据的,不适合处理小数据,有些大数据问题是小数据程序是处理不了的,他是一个高延迟的任务,有时处理一个大数据需要花费好几个小时 ...

  2. Android开发学习总结(六)—— APK反编译

    学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译.我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或 ...

  3. IM通信协议逆向分析、Wireshark自定义数据包格式解析插件编程学习

    相关学习资料 http://hi.baidu.com/hucyuansheng/item/bf2bfddefd1ee70ad68ed04d http://en.wikipedia.org/wiki/I ...

  4. Android开发学习总结(六)—— APK反编译(转)

    学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译.我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或 ...

  5. JavaEE学习之Spring声明式事务

    一.引言 上一篇文章,学习了AOP相关知识,并做了一个简单的Hello world.本文在上篇文章的基础上,进一步学习下Spring的声明式事务. 二.相关概念 1. 事务(Transaction)— ...

  6. Flask学习之一 hello world

    本人电脑环境: 系统:linux

  7. ThreeJS学习6_几何体相关(BufferGeometry)

    ThreeJS学习6_几何体相关(BufferGeometry) 使用 BufferGeometry 可以有效减少向 GPU 传输几何体相关数据所需的开销 可以自定义顶点位置, 面片索引, 法向量, ...

  8. # ThreeJS学习7_裁剪平面(clipping)

    ThreeJS学习7_裁剪平面(clipping) 目录 ThreeJS学习7_裁剪平面(clipping) 1. 裁剪平面简介 2. 全局裁剪和局部裁剪 3. 被多个裁剪平面裁剪后 4. 被多个裁剪 ...

  9. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

随机推荐

  1. Spring security UserDetailsService autowired注入失败错误

    最近使用spring mvc + spring security 实现登录权限控制的时候,一直不能成功登录,检查过后是dao一直无法注入为null CustomUserDetailConfig.jav ...

  2. android最新版 极光推送

    极光推送对于移动开发的程序员都不陌生,用起来也挺方便的,今天在这里给大家介绍下最先版的极光推送的用法,超级简单. 1.在build.gradle里面添加两个方法并引用一个库文件 1.1在default ...

  3. Ubuntu16.04安装QQ(图文说明)

    导读 最近,因为工作需要,我安装了Ubuntu16.04,然而有好多不便,工作上的事情大多需要QQ联系,然而在Ubuntu上的WebQQ很是不好用,于是在网上搜索了好多个linux版本的QQ,然而不是 ...

  4. JqGrid 获取所有数据

    jqGrid使用本地数据时,当jqGrid配置的rowNum小于本地总数据量(records属性记录总数据,可以通过records获取到本地总数据量),调用getRowData方法获取到的只是显示的部 ...

  5. CreateRemoteThreadex开启远程线程失败集合

    修改进程PE头 报错 修改进程_EPROCESS +0x12c SectionBaseAddress : 0x00bf0000 都会报错 不是有效的win32程序 错误号193 修改进程PEB +0x ...

  6. CS无线电语

    [Radio Commands (" Z "键) - 无线电指令] 1."Cover me" (掩护我) 2."You Take The Point& ...

  7. java web页面跳转 总结

    Servlet中forward和redirect的区别 forward方式:request.getRequestDispatcher("/somePage.jsp").forwar ...

  8. win10系统下把Oracle卸载干净

    我和大家一样,遇到了一个问题,就是如何把Oracle从自己的电脑卸载干净,很多人都觉得很难把Oracle卸载干净,于是选择重装系统,因为解决不了Oracle没有卸载干净之后,重装不了的问题,有时候真的 ...

  9. oracle常用操作命令总结

    一. 默认安装带来的用户名/密码:--sys/change_on_install SYSDBA 或 SYSOPER 不能以 NORMAL 登录,可作为默认的系统管理员 --system/安装时输入的密 ...

  10. ubuntu mysql 数据库备份以及恢复[命令行]

    之所以加了个ubuntu,其实也没什么,就是恢复数据库的时候给幽默了一下,所以特地加上.   写在前面:一直很想好好的学linux命令行.shell编程,幻想自己能够通过学习进而成为命令行高手,游刃于 ...