`
zhaohaolin
  • 浏览: 1025943 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ActiveMQ技术预研报告【转】

    博客分类:
  • JMS
阅读更多

ActiveMQ技术预研报告

研究部朱懋柱

1.文档介绍

1.1 文档目的

对前期进行的ActiveMQ研究进行总结和分享ActiveMQ方面的心得。

1.2 文档范围

适合技术中心技术人员,可以作为技术参考。

1.3 参考文档

ActiveMQ官方网站 http://activemq.apache.org/

开源中国社区 http://www.oschina.net/p/activemq

百度百科    http://baike.baidu.com/view/157103.htm?fr=ala0_1_1

1.4 术语与缩写解释

缩写、术语
MQ 消息队列,很多时候指消息中间件服务器
ActiveMQ ActiveMQ是一个开放源码基于Apache 2.0 licenced 发布并实现了JMS 1.1的消息中间件
JMS jms即Java消息服务(Java Message Service),一种协议标准
URI 资源标志符(Uniform Resource Identifier, 简称”URI”)

 

2. 研究背景介绍

为了快速有效的丰富汇讯的功能,减少开发时间和开发成本,我们将web的技术融合起来,技术融合中出现一个问题就是消息实时通知汇讯客户端的处理消 息的流转。简单的方法可以通过web服务器和IM服务器进行直连来完成通信,但这样的架构方案让web和IM过于依赖,为了提供更好的扩展性,降低耦合, 考虑引入消息中间件来作为两者的中介,减少依赖,由此我们需要对消息中间件进行一些分析和研究。

3. 技术说明

         ActiveMQ是一个开放源码基于Apache 2.0 licenced 发布并实现了JMS 1.1的消息中间件,应用中引入中间件的好处是减少服务器之间的依赖关系,提高扩展性,在没有引入消息中间件的情况可能出现如下图所示:

出现服务器多依赖的情况,不方面扩展,而引入消息中间件后如

         从图中可以看出引入消息中间件后,每个服务器只依赖于消息中间件,而且在应用中这种依赖关系式一种弱依赖关系,为什么这么讲呢?请看下节对消息中间件的分享报告。

4.ActiveMQ的技术分析

         ActiveMQ实现了sub/pub(订阅/发布)的机制,实现jms协议,sub/pub属于设计模式中典型的观察者模式,每台服务器只需要订阅自己 希望得到的消息,而不必要轮询服务器是否有自己需要的消息,也不需要知道消息发布者是谁,而发布消息的一端也不需知道谁是消息的接收端,有多少给接受者, 这些都不重要,只要将消息发布到消息中间件就可以了。

ActiveMQ消息发布和订阅的类型分为BytesMessage(二进制消息流的方式)、MapMessage(一种键值对方式的消息)、 ObjectMessage(一种序列化对象的消息形式)、TextMessage(字符流的消息类型),可以根据需要进行消息类型选择,当然对于同一个 消息发布/订阅双方需要采用一致的消息类型,同一个服务器可以采用多种消息格式,不过不同的消息格式需要奖励不同的发布/和订阅者。这样一来应用就相当灵 活,可以根据需要进行类型选择,不过选择ObjectMessage类型的时候应该注意,这个消息类型主要是序列化的Java对象,所以不支持不同的语言 进行类型数据交换。

ActiveMQ应用程序接口(摘自百度百科)

ConnectionFactory 接口(连接工厂)

l  用户用来创建到JMS提供者的连接的被管对象。JMS客户通过可移植的接口访问连接,这样当下层的实现改变时,代码不需要进行修改。 管理员在JNDI名字空间中配置连接工厂,这样,JMS客户才能够查找到它们。根据消息类型的不同,用户将使用队列连接工厂,或者主题连接工厂。

Connection 接口(连接)

l  连接代表了应用程序和消息服务器之间的通信链路。在获得了连接工厂后,就可以创建一个与JMS提供者的连接。根据不同的连接类型,连接允许用户创建会话,以发送和接收队列和主题到目标。

Destination 接口(目标)

l  目标是一个包装了消息目标标识符的被管对象,消息目标是指消息发布和接收的地点,或者是队列,或者是主题。JMS管理员创建这些对象,然后用户通过JNDI发现它们。和连接工厂一样,管理员可以创建两种类型的目标,点对点模型的队列,以及发布者/订阅者模型的主题。

MessageConsumer 接口(消息消费者)

l  由会话创建的对象,用于接收发送到目标的消息。消费者可以同步地(阻塞模式),或异步(非阻塞)接收队列和主题类型的消息。

MessageProducer 接口(消息生产者)

l  由会话创建的对象,用于发送消息到目标。用户可以创建某个目标的发送者,也可以创建一个通用的发送者,在发送消息时指定目标。

Message 接口(消息)

l  是在消费者和生产者之间传送的对象,也就是说从一个应用程序创送到另一个应用程序。一个消息有三个主要部分:

l  消息头(必须):包含用于识别和为消息寻找路由的操作设置。

l  一组消息属性(可选):包含额外的属性,支持其他提供者和用户的兼容。可以创建定制的字段和过滤器(消息选择器)。

l  一个消息体(可选):允许用户创建五种类型的消息(文本消息,映射消息,字节消息,流消息和对象消息)。

l  消息接口非常灵活,并提供了许多方式来定制消息的内容。

Session 接口(会话)

l  表示一个单线程的上下文,用于发送和接收消息。由于会话是单线程的,所以消息是连续的,就是说消息是按照发送的顺序一个一个接收的。会话的好处是它支持事 务。如果用户选择了事务支持,会话上下文将保存一组消息,直到事务被提交才发送这些消息。在提交事务之前,用户可以使用回滚操作取消这些消息。一个会话允 许用户创建消息生产者来发送消息,创建消息消费者来接收消息。

MessageListener接口(消息监听者)

l  这是为一个消息消费者的消息监听接口,生产者必选设置消息监听者,否则消息将不处理,当客户端接收到消息后,会通过调用消息监听者的接口来进行相应的消息处理,一般在开发过程中通过重载的方式重新定义监听着的onMessage虚接口,来完成消息的监听和处理。

5.ActiveMQ的C++客户端的实现

         ActiveMQ提供了c++的client开发库支持,这样我们实现起来就比较简单了,下面我们来看看发布和订阅的简单例子。

5.1 pub(发布)端的简单实现过程

首先根据传入的URI创建一个发布接口,创建过程如下:

然后调用发布接口发布消息,发布过程如下:

5.2 sub(订阅)端的简单实现过程

订阅者的创建过程和发布者的创建过程基本一样,不过最后创建的不是生产者接口,而是消息消费者接口(MessageConsumer),创建流程如下:

         在实现时,我们重载消息消费者的监听者,并设置消息消费者的监听接口为我们实现的监听接口,再重载监听者onMessage接口来进行消息处理。这样,只 要客户端接收到消息,就会调用我们的监听者的onMessage接口,我们就可以在这个接口进行相应的处理,完成消息接收处理过程。

5.3 消息处理过程

         a) 消息订阅

需要订阅某主题的客户端实现订阅过程,产生消息消费者的监听者实例,并实现消息处理过程。

         b) 消息发布

         需要发布消息的客户端实现消息发布的过程,等到一个生产者实力,并通过生产者接口向消息中间件发布消息。

         c) 服务器消息转发

消息中间件服务器收到生产者发送过来的消息后,查找是否有该类型主题消息的订阅者,有则分别发送消息。

         d) 订阅者消息处理

订阅者客户端收到消息中间件服务器发送过来的的消息后,调用监听者onMessage接口完成消息处理

6.总结

         对ActiveMQ的研究尚浅,也许有些理解不当之处,欢迎大家指出,一起学习,消息中间件在跨语言和跨平台,服务器间解耦都起到了比较到的作用。值得我们去学习,在此感谢所有提供免费网络资源的网站,感谢开源中国社区。

研究部撰写于 2010年07月30日,

分享到:
评论

相关推荐

    SpringCloud微服务预研知识点整理

    ### SpringCloud微服务预研知识点整理 #### 一、微服务概述 微服务架构是一种将单个应用程序开发成一套小型服务的方法,每项服务都运行在其独立的进程中,并且使用轻量级通信机制(通常是HTTP资源API)进行交互。...

    Java架构师的主要职责范围.pdf

    * 解决重要项目中关键架构问题和技术难题,负责项目中关键技术难点攻关和预研 * 对开发团队进行技术指导和培训,规范开发流程 任职资格: * 精通 Java 语言,对相关技术领域开源产品有深入理解 * 精通领域建模,...

    伦茨8400 HighLine变频器EASY Navigator配置及应用

    内容概要:本文详细介绍了如何使用伦茨公司的EASY Navigator软件对8400 HighLine系列变频器进行配置。主要步骤涵盖了创建项目、选择变频器类型和版本、添加通信接口、设定控制类型和电机参数、进行参数配置,如控制方式、抱闸模式、以及通讯方式。文中还提供了详细的配置指导,例如设置抱闸延迟时间和通讯确认等功能,强调了配置过程中需要注意的关键点和常见操作。另外,本文详细讲解了如何利用PROFINET和以太网/IP进行网络设置和设备之间的通信配置,并说明了如何通过发送和接收四个双字节报文来监控和控制变频器的状态和性能,确保变频器能够稳定可靠地运行。 适合人群:电气工程师、自动化技术人员及负责工业控制系统配置的专业人士,特别是有一定自动化背景并熟悉PLC编程的人群。 使用场景及目标:① 对8400 HighLine系列变频器进行初始配置及后续调整,适用于新建工程项目或者现有系统的升级改进。② 提供了一个从理论到实践的学习路径,帮助工程技术人员快速掌握变频器的基本原理及其高级应用技巧。③ 引导用户理解和实施变频器的具体配置任务,确保其能够正确响应指令、保持高效运作并减少停机风险。 其

    基于Matlab的蔡氏混沌电路(Chua's circuit)系统分析,作为一种简单的非线性电子电路设计,它可以表现出标准的混沌理论行为 这个电路的制作容易程度使它成为了一个无处不在的现实世界的混沌

    基于Matlab的蔡氏混沌电路(Chua's circuit)系统分析,作为一种简单的非线性电子电路设计,它可以表现出标准的混沌理论行为 这个电路的制作容易程度使它成为了一个无处不在的现实世界的混沌系统的例子 蔡氏系统混沌仿真,输出lyapunov指数、分岔图、相图结果 程序已调通,可直接运行 ,Matlab; 蔡氏混沌电路; 系统分析; 非线性电子电路设计; 混沌理论行为; 制作容易; 现实世界系统例子; 混沌仿真; Lyapunov指数; 分岔图; 相图结果; 程序调通。,基于Matlab的蔡氏混沌电路系统分析:非线性电子电路的混沌仿真与结果展示

    基于秃鹰搜索优化算法优化XGBoost(BES-XGBoost)的数据分类预测 BES-XGBoost数据分类 采用交叉验证抑制过拟合问题 优化参数为迭代次数、最大深度和学习率 matlab代码,

    基于秃鹰搜索优化算法优化XGBoost(BES-XGBoost)的数据分类预测 BES-XGBoost数据分类 采用交叉验证抑制过拟合问题 优化参数为迭代次数、最大深度和学习率 matlab代码, 注:暂无Matlab版本要求 -- 推荐 2018B 版本及以上 注:采用 XGBoost 工具箱,仅支持 Windows 64位系统 ,基于您提供的关键信息,以下是一行提炼的关键词,以分号分隔: BES-XGBoost数据分类预测; 秃鹰搜索优化算法; 交叉验证; 抑制过拟合; 优化参数; Matlab代码; 2018B 版本及以上; XGBoost工具箱; Windows 64位系统,基于BES-XGBoost的秃鹰搜索优化算法数据分类预测与参数优化

    德国大陆ARS408-21毫米波雷达数据Continental车载毫米波雷达ARS408-21的技术特性及其在自动驾驶中的应用

    内容概要:本文详细介绍了德国大陆公司推出的ARS 408-21车载毫米波雷达传感器。这是一种77GHz频段的高端长距离雷达产品,在感应检测区域上分为短程蓝色视野(近距感知)和远程红色视野(远距监测)。其具备高灵敏度的目标检测能力、可靠的障碍物距离与速度测量功能,适用于防碰撞、自动驾驶控制等应用。该传感器不仅支持广泛的测量距离,还可在复杂环境下精准辨识物体,并带有多种自我保护和自动诊断机制确保稳定运行。文档特别强调了其FMCW测量技术和CAN通讯接口特性,便于与其他车用电子控制系统整合,同时提供了关于安装尺寸、功耗参数等方面的详尽数据。 适用人群:从事智能交通系统、ADAS辅助驾驶研究的技术人员,汽车制造商工程师,自动驾驶硬件供应商,雷达技术研发人员及相关学术研究人员。 使用场景及目标:①提升车辆在高速公路行驶的安全性;②满足城市道路环境下的自动巡航及防碰撞性能需求;③实现远距离监控以及危险区域或难以进入地域的状态监视;④促进自动化工业领域的机器设备间协同工作。 其他说明:ARS 408-21是新一代汽车级产品,在小型化设计基础上融合更多先进传感与处理能力。它不仅符合国际电磁兼容性标准,

    软考架构师17-21年四年真题及解析

    软考架构师17-21年四年真题及解析

    2025年DeepSeek大模型及其企业应用进展报告

    内容概要:本文详细介绍了DeepSeek大模型及其在企业中的应用实践情况。主要内容涵盖大模型的发展史、类型、典型应用场景(如对话助手、个性化推荐、智能客服、智能办公、智能医疗、智能金融)、大模型与其他技术的融合应用(如RPA、知识图谱、物联网、数据分析可视化),并在企业中部署大模型的具体策略和解决方案,包括部署方式(本地/云端/边缘/混合)、实施路线、技术架构设计以及面临的挑战和应对策略。此外,文中列举了一系列典型应用案例,如瑞金医院的RuiPath、东莞市的人工智能大模型中心、云南白药的大模型应用开发平台等。文中还对未来大模型的发展方向作出了展望,认为多模态融合、生成式AI与具身智能、小模型的高效化以及端侧大模型将成为重要趋势。 适合人群:具有中级及以上技术水平的研发工程师、企业IT管理人员、数据科学家及其他对大模型及人工智能感兴趣的专业人士。 使用场景及目标:该文章帮助读者了解DeepSeek大模型在企业内的多种实际应用场景和技术部署方式,为他们制定相应策略以充分利用AI技术提升业务效率和创新能力。同时也为读者指明未来的潜在发展领域。 其他说明:文章强调了企业在采用和集成AI技术过

    pcmconfigv2_1.7z

    pcmconfigv2_1.7z

    Matlab simulink 风储调频,模糊控制,风电调频,模糊控制改变风电惯性控制系数 储能采用下垂控制 有SOC特性,调频效果好 纯,创新就是模糊控制 模糊控制系数随着风速和频率而改变

    Matlab simulink 风储调频,模糊控制,风电调频,模糊控制改变风电惯性控制系数。 储能采用下垂控制。 有SOC特性,调频效果好。 纯,创新就是模糊控制 模糊控制系数随着风速和频率而改变,实现了自适应控制 mpc主要用于预测频率,3-mpc-模糊控制联合调频,模糊控制结合mpc预测的频率和风速自适应整定调频系数,进而改变调频控制功率。 ,关键词: 1. Matlab Simulink 2. 风储调频 3. 模糊控制 4. 风电调频 5. 虚拟惯性控制系数 6. 下垂控制 7. SOC特性 8. 自适应控制 9. MPC预测 10. 调频系数 以上关键词用分号分隔为:Matlab Simulink;风储调频;模糊控制;风电调频;虚拟惯性控制系数;下垂控制;SOC特性;自适应控制;MPC预测;调频系数。,基于模糊控制与MPC联合调频的风储系统优化研究

    NVIDIA深度学习训练手册:神经网络构建、训练及防止过拟合的方法

    内容概要:本文介绍了神经网络的基础构建方法及其训练步骤,涵盖数据准备、模型创建、激活函数的选择以及常见问题(如过拟合并提出解决方案),最后讨论了分类问题的应用实例——MNIST手写数字识别任务。文中详细解释了每个步骤背后的原理,比如利用均方误差衡量模型性能,通过梯度下降法更新权重来最小化误差,还提到了一些常用的优化器(SGD、Adam等)的作用与区别。 适用于具有一定机器学习基础,希望深入理解神经网络工作机制的开发者或研究人员,他们可以通过此文加深对于神经网络的理解,尤其是针对图像识别等领域的问题解决思路和工具选择。 使用场景及目标:帮助读者掌握神经网络从简单到复杂的构造流程,理解训练过程中涉及到的概念和技术手段(如批量训练、学习率调整),从而能够在实际项目中应用相关技术和规避常见的坑洞(特别是过度适应训练集而导致的效果欠佳)。此外,还提供了具体的数据集案例以方便动手实践。 其他说明:该资料由NVIDIA官方出品,内容详实可靠,但需要注意版权保护。

    西南交大计算机C第三章习题答案.pptx

    西南交大计算机C第三章习题答案.pptx

    comsol电动修复土壤,重金属污染物浓度以及土壤PH变化 ,comsol电动修复土壤; 重金属污染物浓度; 土壤PH变化,COMSOL电动修复土壤技术:重金属浓度与土壤PH变化研究

    comsol电动修复土壤,重金属污染物浓度以及土壤PH变化 ,comsol电动修复土壤; 重金属污染物浓度; 土壤PH变化,COMSOL电动修复土壤技术:重金属浓度与土壤PH变化研究

    阅读习惯中的知识系统化与结构化.doc

    阅读习惯中的知识系统化与结构化

    MATLAB实现基于图卷积神经网络GCN多特征分类预测(多输入单输出)的详细项目实例(含完整的程序,GUI设计和代码详解)

    内容概要:本文档详细介绍了一个使用MATLAB实现的基于图卷积神经网络(GCN)的多特征分类预测项目,尤其侧重于多输入单输出的复杂分类任务。文档首先介绍了GCN的工作原理及其在多特征图数据中的优势,随后详述了该项目的具体目标,其中包括提升分类精度、解决多输入单输出的问题、探索GCN在多维度图数据的应用及优化训练效率等。接着,文档剖析了面临的八大挑战及对应解决方案,例如处理多特征数据、图数据的稀疏性和训练效率问题等。此外,文档列举了一些GCN的特点与创新之处,比如多特征输入、高效的训练策略、正则化与数据增强技术等。文中详细展示了如何通过MATLAB构建、训练和评估GCN模型,并给出具体的数据预处理、超参数调整及防过拟合策略等步骤的操作方法。 适合人群:有一定编程基础和技术背景的研发人员、从事深度学习和图卷积网络的研究人员或开发者,特别是那些关注如何处理复杂数值或网络关联关系中的多特征输入问题的人。 使用场景及目标:本项目适用于多个领域内的图数据分析任务,如社交网络、推荐系统、交通流量预测、图像分类、生物网络分析及金融欺诈检测等,其主要目标是通过构建一个准确、稳定的分类预测模型来帮助相关领域的研究人员提高工作效率。 其他说明:本项目提供了丰富的扩展可能性,如跨领城应用、引入图自监督学习、增强学习模块与图卷积网络的结合、实时预测与在线学习功能等。与此同时,为了确保良好的用户体验和高效处理大批量任务,本项目也涵盖了详细的系统架构设计方案,包括API服务、业务集成、数据流处理机制、前后端展示界面等各个方面。项目未来改进方面包括但不限于:进一步探索多模态数据融合的可能性,继续深化图神经网络的研究,提高模型的可解释性和硬件加速等。此外,文中附有完整的程序代码示例和GUI界面试图的设计思路,可以帮助用户更快捷地上手项目。

    Matlab实现ABC-BP人工蜂群算法优化BP神经网络多输入多输出预测的详细项目实例(含完整的程序,GUI设计和代码详解)

    内容概要:本文档详细介绍了基于MATLAB实现的人工蜂群算法(ABC)优化BP神经网络多输入多输出预测(MIMO)的项目实例。项目旨在优化BP神经网络在MIMO预测任务中的性能,解决传统BP神经网络存在的局部最优解和收敛速度慢等问题。人工蜂群算法以其全局搜索能力和局部探索能力,显著提升了模型的预测效果。文中涵盖了从环境准备、数据预处理、构建BP神经网络、ABC算法优化、网络训练到结果评估与预测的全过程,并通过实际代码演示每一步的具体实施方法。除此之外,还包括了模型部署、多模态数据处理、API服务等方面的拓展内容,确保项目的完整性和实用性。 适合人群:具有一定编程基础的科研人员和技术爱好者,特别是从事预测建模、人工智能应用开发的专业人士。 使用场景及目标:①优化BP神经网络,提高预测模型的准确性和稳定性,特别适用于金融、医疗、工业等复杂多输入多输出预测问题;②为研究人员提供了从理论到实践的全流程指导,涵盖模型训练、评估、优化和部署等多个环节;③通过具体案例和代码实现,让学习者深刻理解智能算法在实际项目中的应用细节。 阅读建议:本项目实例全面细致,读者可以根据自身需求重点研读感兴趣的部分。建议读者先熟悉基础理论知识(如BP神经网络的工作原理、人工蜂群算法的基础概念),然后跟随文中的步骤逐步操作,配合提供的代码示例进行实践。同时,对于想深入了解模型优化、超参数调整、实时预测等高级主题的读者,项目给出了详细的扩展内容和技术讨论。

    lam _22311115_06.zip

    lam _22311115_06.zip

    南邮Windows应用开发(双语)个人总结笔记

    根据课件梳理而成,内容比课件多

    :matlab的2DCNN、1DCNN、BP、SVM轴承故障诊断 这个源程序复现了EI期刊的故障诊断算法,将故障信号转化为二维灰度图,然后输入2DCNN进行故障诊断,并附带了一些对比算法 灰度图可视

    :matlab的2DCNN、1DCNN、BP、SVM轴承故障诊断 这个源程序复现了EI期刊的故障诊断算法,将故障信号转化为二维灰度图,然后输入2DCNN进行故障诊断,并附带了一些对比算法 灰度图可视化需要改些联系话可以帮改,数据集可以帮忙替为渥太华大学轴承实验台数据,我目前只用到西储大学这两个 ,2DCNN; 1DCNN; BP; SVM; 轴承故障诊断; 灰度图可视化; 数据集替换; 渥太华大学轴承实验台数据,Matlab轴承故障诊断程序:2DCNN与多种算法的复现对比研究

Global site tag (gtag.js) - Google Analytics