当前位置: 首页 > 编程日记 > 正文

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

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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提供者提供给我们的接口得到了.

转载于:https://my.oschina.net/91jason/blog/375137

相关文章:

浏览器前进后退对下拉框数据的丢失(省市联动实现和例子)

浏览器前进后退对下拉框数据的丢失的问题,典型的为省市下拉框联动时城市数据的丢失。省市联动一般的实现为城市在省份的选择后js加载。 那么每次城市的改变只需要重新加载新的城市数据并更新下拉框即可: 下拉函数 function ReloadCities() { var $ddlCit…

Linux(centOS)手动安装Apache+MySQL+PHP+Memcached+Nginx原创无错版

最后更新时间:2012.3.21 第一步:Apache安装(已更新到2.2.22) 下载 去 http://www.apache.org 自己找新的 http://httpd.apache.org/ 国内有很多镜像点例如"人人"和"163" http://labs.renren.com/ 注意要找httpd,因为a…

首届“陇剑杯”网络安全大赛线上赛圆满结束

9月14日,集结了各行业领域3020支战队、11135名网络安全精英的首届“陇剑杯”网络安全大赛线上赛圆满结束,成功拉开将于9月25日在甘肃兰州新区举行的总决赛战幕。届时,涵盖网络配置、数据分析和漏洞修复等真实数字化业务场景的网络防御赛道和R…

与流氓软件的一次艰苦“奋战”

不知道大家有么有过这样的经历,英语不好,但有些时候找东西,还只有英文网站上有,但英文网站上下载东西,有时候不小心就会下错,稍有不慎,电脑就中标了;这不我昨天就遇到了,…

mysql5.6基于GTID主从复制设置

1.主库和从库都必须要开启binlog2.主库和从库server-id不相同3.建立主从辅助用户grant replication slave on . to rep192.168.200.% identified by oldboy;[mysqld]server-id1log-binmysql.binbinlog_formatrowgtid_modeONenforce_gtid_consistencylog_slave_updatesrelay_log…

Python 解一道江苏 小升初 数学题,如此变态,看不起来谁?

作者:小小明【江湖人称"明佬"】链接:blog.csdn.net/as604049322/article/details/118388505注明:本文经过作者小小明授权发布,可戳原文链接关注原文作者!本文简介大家好,我是黄同学????前段时…

利用负载均衡优化和加速HTTP应用

1.负载均衡技术简介 现代企业信息化应用越来越多的采用B/S应用架构来承载企业的关键业务,因此,确保这些任务的可靠运行就变得日益重要。随着越来越多的企业实施数据集中,应用的扩展性、安全性和可靠性也越来越受到企业的重视。 负载均衡技术通…

查看sqlserver被锁的表以及如何解锁

查看sqlserver被锁的表以及如何解锁查看被锁表:www.2cto.com select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks where resource_typeOBJECTspid 锁表进程 tableName 被锁表名解锁&#x…

Centos 6.4下MySQL备份及还原详情介绍

我们前面文中中介绍了centos 6.4下MySQL的安装及配置,安装后为了保证数据的安全性所以我们同样也要学会备份及还原,备份及还原操作在我们的真实工作环境中是必不可少的,由于是对数据库数据备份,所以今天我们就随之介绍一下&#x…

iPhone 13 终于等到了!降价、新颜色、电池续航性能大提升

整理 | 禾木木、苏宓 出品 | AI科技大本营(ID:rgznai100) 它来了,真的来了! 不知有多少朋友守在今日凌晨观看一年一度的科技春晚——苹果发布会! 还是那个熟悉的样子,从加利福尼亚的沙漠中向我们走来&am…

“httpd未被被识别的服务”的解决办法

使用自动编译安装会出现这个问题,也就是输入 #service httpd restart 给出这样的提示;这时候要重启可以 #/usr/local/apache2/bin/apachectl start 如果你希望使用 #service httpd restart 那么需要按下面的做法 注意的是daemon /usr/local/apache…

安装sql 2005 闪退 连接到服务器失败。错误:0x80070424

可以尝试安装.net4.0 我是通过此办法解决。 本文转自 freeterman 51CTO博客,原文链接:http://blog.51cto.com/myunix/1751338,如需转载请自行联系原作者

简述DataInputStream和DataOuputStream

2019独角兽企业重金招聘Python工程师标准>>> Java开发中经常会用到IO流,那么就会碰到DataInputStream和DataOuputStream这两个包装类。下面就来简述一下这两种包装类的用法: 1.DataOutputStream:标准的数据输出流,将ja…

数字时代企业迎变局,如何让增长变简单?

随着企业数字化转型进入深水区,企业增长模式正迎来跨时代巨变:营销场景复杂且多变,用户触点丰富而分散, MarTech(营销技术)解决方案愈加碎片化,企业营销增长过程中各环节间的割裂,让…

Linux服务器网络开发模型

为什么Nginx的性能要比Apache高得多? 这主要是因为Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(FreeBSD)网络I/O模型,而Apache则使用的是传统的select模型。曾在一篇博客上看到有这么个实例:假设你在大…

《从零开始学Swift》学习笔记(Day 47)——final关键字

在类的定义中使用final关键字声明类、属性、方法和下标。final声明的类不能被继承,final声明的属性、方法和下标不能被重写。 下面看一个示例: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051final cl…

CentOS 5.5 编译安装apache+php+mysql,利用CMS快速建立论坛

这个是转来的,细节没有验证,请网友自己斟酌。。。。。。。。。。CentOS 5.5 编译安装apachephpmysql,利用CMS快速建立论坛1、安装Apache [rootbogon tmp]# wget http://labs.renren.com/apache-mirror/httpd/httpd-2.2.15.tar.bz2 [rootbogo…

SDT(software-defined Things)?软件定义的物件

物联网(IOT)的概念早在1999年就被宝洁公司的员工Kevin Ashton正式提出,可直到这最近几年才越来越火,无论国内外,但凡跟IOT 搭上点边的都能吸引众多的目光。2014年,投到智能硬件方向的风险资金就占到VC的一半…

赠书福利 | Tidio AI 趋势报告:约42%受访者能够接受机器人伴侣

编译 | 禾木木出品 | AI科技大本营(ID:rgznai100)文章内图源:Tidio近日,波士顿动力发布了一段机器人跳舞的视频,有些人不敢相信他们所看到的,它看起来更像是皮克斯动画而不是真实的镜头。有人说&#xff1a…

Airlaunch 快捷设置代码分享

Airlaunch 快捷设置代码分享设置:prefs:rootSETTING蜂窝网络:prefs:rootMOBILE_DATA_SETTINGS_IDWIFI:prefs:rootWIFI定位服务:prefs:rootLOCATION_SERVICES蓝牙:prefs:rootBluetooth辅助功能:prefs:rootGe…

hdu3829(最大独立集)

传送门:Cat VS Dog 题意:动物园有N只猫,M只狗,P个小孩。每个小孩都有自己喜欢的动物和讨厌的动物,如果他喜欢狗,那么就讨厌猫, 如果他讨厌狗,那么他就喜欢猫。某个小孩能开心&#x…

数据科学家:那些年,我都学过哪些编程语言…

前言 我们对事物的看法各不相同,有时他人特别喜欢的语言可能会成为另一个人的的噩梦。而我个人的噩梦是用C语言进行日常的编程工作。 本文就介绍了作为一名数据科学家,我在职业生涯中所学过的语言,其中包括MATLAB、Weka、R、C 以及Python。 数…

short_open_tag 必须打开

在使用phpcms本地安装的过程中,到运行环境检测这一步,发现:short_open_tag 必须打开。 从网上搜索相关资料时,发现,将php.ini文件中的short_open_tag off 项,设置成on,重启服务器即可。 shor…

10.15 iptables filter表案例

2019独角兽企业重金招聘Python工程师标准>>> iptables常用知识回顾点 iptables -I/-A/-D 后紧跟 链 ,可以是INPUT,OUTPUT,FORWARDiptables -P 用来指定 链的默认策略 ——>最好不要直接操作,否则会造成远程的终端断…

高并发大型网站架构设计

一个大型的网站网站应该由如下6个子系统组成 负载均衡系统 反向代理系统 Web服务器系统 分布式存储系统 底层服务系统 数据库集群系统 为什么要做高并发系统设计? 事实上,针对于任何单一的网络服务器程序,其可承受的同时连接数目是有理…

Tidio AI 趋势报告:约42%受访者能够接受机器人伴侣

编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 文章内图源:Tidio 近日,波士顿动力发布了一段机器人跳舞的视频,有些人不敢相信他们所看到的,它看起来更像是皮克斯动画而不是真实的镜头。 有人说&#x…

微信公众平台对所有公众号开放自定义菜单

据统计,微信公众号已达1000多万了,但大多数没有微信认证,且没有开发能力,为此微信公众平台开放了自定义菜单功能给所有公众号,这是微信团队年前给广大自媒体送的大礼,期待微信越来越开放 公众帐号运营者点击…

SignalR网页实时推送

1.新建项目,选择mvc4 Wed应用程序,选择Internet,视图引擎:Razor 2.在控制器中添加 并添加上视图 3.引用(install-package Microsoft.AspNet.SignalR) 4.添加Startup 项目名 5.新建Hubs文件夹,添…

Hyper-V虚拟化测试05防火墙及证书配置

3.防火墙和证书3.1、防火墙配置打开Windows防火墙,并进入到高级配置入站规则,启用“Hyper-V副本HTTP侦听器(TCP入站)”和“Hyper-V副本HTTPS侦听器(TCP入站)”可以看到已经启用了如上两条规则允许入站流量3…

httpwatch的timechart 解析

从timeChart,我们可以一目了然的看到那些请求花费的时间较长,一般柱状的长短表示从请求到接受共花费的时间,我们重点需要优化那些柱状较长的部分,当然我们也可以点击time列,按请求时间排到序,直接找出请求时…