技术标签: activemq jms java 消息中间件 mq
定义:JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
简介:JMS是一种与厂商无关的 API,用来访问消息收发服务(消息中间件)。它类似于JDBC(Java DatabaseConnectivity):这里,JDBC 是可以用来访问许多不同关系数据库的API,而JMS同样提供与厂商无关的访问方式来访问消息收发服务,许多厂商目前都支持JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ,这只是几个例子。 JMS 使您能够通过消息收发服务从一个 JMS 客户机向另一个JMS客户机发送消息。消息是 JMS 中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型来划分,可以将消息分为几种类型,它们分别携带:简单文本(TextMessage)、可序列化的对象 (ObjectMessage)、属性集合 (MapMessage)、字节流 (BytesMessage)、原始值流 (StreamMessage),还有无有效负载的消息 (Message)。
定义:MQ全称为消息队列(Message Queue), MQ是一种应用程序与应用程序之间的通信方法。应用程序通过消息队列来通信,而无需专用连接来链接它们。消息传递指的是程序通过在消息队列中收发数据进行通信,而不是通过直接调用彼此来通信。队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟的MQ产品有IBM的WEBSPHERE MQ。
MQ特点:MQ的消费-生产者模型的一个典型的代表,一端往消息队列中不断的写入消息,而另一端则可以读取或者订阅队列中的消息。
使用场景:在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。
JMS是一个用于提供消息服务的技术规范,它制定了在整个消息服务提供过程中的所有数据结构和交互流程。而MQ则是消息队列服务,是面向消息中间件(MOM)的最终实现,是真正的消息服务提供者。MQ的实现可以基于JMS,也可以基于其他规范或标准,其中ActiveMQ就是基于JMS规范实现的消息队列。
常见的基于JMS的MQ:
ActiveMQ是Apache出品,最流行的,能力强劲的开源消息队列。ActiveMQ是一个完全支持JMS 1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
主要特点:
优点:是一个快速的开源消息组件(框架),支持集群,同等网络,自动检测,TCP,SSL,广播,持久化,XA,和J2EE1.4容器无缝结合,并且支持轻量级容器和大多数跨语言客户端上的Java虚拟机。消息异步接受,减少软件多系统集成的耦合度。消息可靠接收,确保消息在中间件可靠保存,多个消息也可以组成原子事务。
缺点:ActiveMQ默认的配置性能偏低,需要优化配置,但是配置文件复杂,ActiveMQ本身不提供管理工具;示例代码少;主页上的文档看上去比较全面,但是缺乏一种有效的组织方式,文档只有片段,用户很难由浅入深进行了解,文档整体的专业性太强。在研究阶段可以通过查maillist、看Javadoc、分析源代码来了解。
ActiveMQ应用场景:
预准备:下载和安装集成开发环境推荐使用Visual Stdio 2010以上的版本。第一步:下载和安装OpenCV SDK在官网找到OpenCV Windows版下载下来,自定义位置进行安装。第二步:配置环境变量计算机》属性》高级系统设置》高级》环境变量》在PATH中增加相应路径。对于32位系统,就添加“…opencv\build\x86\vcIO\bin”,和之前的就...
题目描述桌上有一叠牌,从顶面的牌开始往底面依次编号为 1~n。当至少还剩两张牌时进行以下操作:把第一张扔掉,然后把新的第一张放到整叠牌的最后。输入输入一个正整数 n,2<=n≤1000000,表示起始时牌的张数输出输出一行,按顺序输出每次扔掉的牌的编号,最后输出最后剩下的牌的编号,两个数之间用一个空格隔开。输入样例7输出样例1 3 5 7 4 2 6代码:#incl...
情况描述: <!--统一管理jar包版本--> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8&
本期内容概览:算法竞赛入门经典第三章例题代码;用mpv实现多视频同步播放;pytorch模型导出成ONNX格式:支持多参数与动态输入;介绍一篇GTC2021演讲《3D Reconstruction for Game Development》;推荐音视频相关文章,《拥抱智能,AI视频编码技术的新探索》
Linux 之权限管理-文件特殊权限SetUID、SetGID和Sticky BITSetUID在所有者---中拥有s权限,例:passwd -rwsr-xr-x前提:只有执行二进制程序才能设定SUID要对该程序有X权限作用:任何一个普通用户在执行拥有SUID权限的程序时获得该程序文件所有者的身份。但只是在程序执行过程中有效设定SetUID: 4代表SUID——chmod 4755 文件名;ch...
1.问题描述在编译p4c的时候报了一个错c++: internal compiler error: Killed (program cc1plus)Please submit a full bug report主要是在编译过程中,内存不够造成的。2.解决方案使用swap创建临时分区sudo dd if=/dev/zero of=/swapfile bs=64M count=16#count的大小就是增加的swap空间的大小,64M是块大小,所以空间大小是bs*count
本发明涉及计算机通信技术领域:,具体涉及一种基于PPPD实现PPP-Server功能的通信模块及其实现方法。背景技术::在网络通信技术领域:中,通常采用以下方式进行通信:如4G数据模块多采用应用处理器+BP一体化设计,一方面保证了BP部分的独立和稳定性,另一方面也增强了模块功能上的可扩展性。4G数据模块的PPP拨号功能是一个标配功能,默认仅对USB提供支持。4G数据模块提供对UART口支持PPP拨...
细心的同学会发现Intellij IDEA每次发版本的时候都会有不同的启动界面背景,都很比较抽象的艺术图像。2020.3的启动界面背景JetBrains的其它产品也有自己独特的设计。但是这背后是怎么实现的、有什么寓意却很少有人知道。今天让胖哥来带你解开这个答案。编码的艺术编码是一门艺术。说到这里你会很容易想到这肯定是利用编程实现的。是的,这里的图像生成器技术用了到机器学习中的神经网络技术。这些生成的图像本质上是前馈神经网络映射函数描绘的!基于传递给网络的确切数据,加上一些预设的生成算法(遗传算法
相信很多朋友都有遇到过这种情况:在登陆游戏或打开某个软件时,系统会弹出一个窗口提示:“d3dx9_43.dll丢失” 或 ”d3dx9_43.dll找不到“,出现这种情况一般是系统的不完整性导致(非正版系统比较容易出现此问题),也可能是此文件被误删。d3dx9_43.dll它是directx的一个组件。而DirectX组件是Windows系统支持游戏和显卡游戏外设的程序接口,任何一个组件...
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路二叉搜索树(二叉排序树/二叉查找树)定义:若它的左(右)子树不空,则左(右)子树上所有节点的值均小于(大于)它的根节点的值.意义:构建一棵二叉搜索树的目的不是为了排序,而是为了提高查找和删除关键字的速度.后序遍历序列的最后一个数字为根节点...
输入子系统由驱动层,输入子系统核心层(Input Core),和事件处理层(Event Handler)三个部分组成。一个输入事件,如鼠标移动,键盘按键按下,通过Driver-->Input Core-->Event Handler-->userspace的顺序到达用户空间的应用程序。驱动层:将底层的硬件输入转化为统一的事件形式,向输入核心(Input Core)汇报。输入核心层:为驱动层
关于如何在系统中生成唯一性 ID 的问题(如订单号、批次号等),一直困扰了许久。因为还要考虑并发的问题,所以时间戳 + 随机数的组合并不可取,Java 中的 UUID 是一种可取的方法,但它的缺点是序列号太长了,而且没有可读性,对用户来说这么一堆乱码是极不友好的。 推特的工程师 snowflake 也提出了一个在分布式系统中生成唯一序列的方法。SnowFlake 的优点是,...