ActiveMQ使用详解---相关概念

一、前言

  公司之前使用activeMQ做过一款用于系统之间传递信息的工具,最近才正式投入生产使用,这期间出现了一些比较奇怪的问题,最终发现是没有清晰的了解activeMQ的相关配置以及一些相关概念,借着这次机会,深入的对activeMQ进行一次剖析,也希望对看官有一定的帮助~

二、正文

  ActiveMQ:是Apache出品,最流行的,能力强劲的开源消息总线。是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。JMS(Java消息服务):是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

2.1 JMS消息模式

  2.1.1 点对点或队列模式

  每个消息只能有一个消费者。消息的生产者和消费者之间没有时间上的相关性,无论消费者在生产者发送消息的时候是否处于运行状态,它都可以提取消息。

2.1.2 Pub/Sub 发布/订阅模式

每个消息可以有多个消费者。生产者和消费者之间有时间上的相关性。订阅一个主题的消费者只能消费自它订阅之后发布的消息。

2.2 Broker节点

   代表一个运行MQ的节点。

2.3 Transport传输方式

  ActiveMQ目前支持的Transport有:VM Transport、TCP Transport、NIO Transport、SSL Transport、Peer Transport、UDP Transport、Multicast Transport、HTTP and HTTPS Transport、WebSockets Transport、Failover Transport、Fanout Transport、Discovery Transport、ZeroConf Transport等。

  2.3.1 VM Transport

  允许客户端和Broker直接在VM内部通信,采用的连接不是Socket连接,而是直接的方法调用,从而避免了网络传输的开销。应用场景也仅限于Broker和客户端在同一JVM环境下。

  2.3.2 TCP Transport

   客户端通过TCP Socket连接到远程Broker。配置语法:

  tcp://hostname:port?transportOptions

  2.3.3 HTTP and HTTPS Transport

  允许客户端使用REST或者Ajax的方式进行连接。这意味着可以直接使用Javascript向ActiveMQ发送消息。

  2.3.4 WebSockets Transport

允许客户端通过HTML5标准的WebSockets方式连接到Broker。

  2.3.5 Failover Transport

青龙系统MQ采用的就是这种连接方式。这种方式具备自动重新连接的机制,工作在其他Transport的上层,用于建立可靠的传输。允许配置任意多个的URI,该机制将会自动选择其中的一个URI来尝试连接。配置语法:

  failover:(tcp://localhost:61616,tcp://localhost:61617,.....)?transportOptions

  2.3.6 Fanout Transport

主要适用于生产消息发向多个代理。如果多个代理出现环路,可能造成消费者接收重复的消息。所以,使用该协议时,最好将消息发送给多个不相连接的代理。

2.4 Persistence持久化存储

  2.4.1 AMQ Message Store

  ActiveMQ 5.0 的缺省持久化存储方式。

  2.4.2 Kaha Persistence

  这是一个专门针对消息持久化的解决方案。它对典型的消息使用模式进行了优化。

  2.4.3 JDBC Persistence

  目前支持的数据库有:Apache Derby, Axion, DB2, HSQL, Informix, MaxDB, MySQL, Oracle, Postgresql, SQLServer, Sybase。

  2.4.4 Disable Persistence

  不应用持久化存储。

2.5 集群方案

  2.5.1 Pure Master Slave

  无单点故障;

  不需要依赖共享文件系统或是共享数据库,使用 KahaDB的方式持久化存储;

  一个Master只能带一个Slave;

  Master工作期间,会将消息状况自动同步到Slave;

  Master一旦崩溃,Slave自动接替其工作,已发送并尚未消费的消息继续有效;

  Slave接手后,必须停止Slave才能重启先前的Master;

 2.5.2 Shared File System Master Slave

2.5.3 JDBC Master Slave

  配置上,不存在Master和Slave的区分,多个共享数据源的Broker构成JDBC Master Slave,首先抢到资源(数据库锁)的Broker成为Master,其他Broker定期尝试抢占资源,一旦Master崩溃,其他Broker抢占资源,最终只有一台抢到,立刻成为Master,之前的Master即便重启成功,也只能作为Slave等待;

三、引用

  “正文”部分转自:http://blog.csdn.net/xiaobai51509660/article/details/32695965

如对博文有疑问或者建议,欢迎加Q探讨:1163142850

时间: 2024-12-21 20:23:36

ActiveMQ使用详解---相关概念的相关文章

ActiveMQ API 详解

4.1 开发JSM的步骤 广义上说,一个JMS 应用是几个JMS 客户端交换消息,开发JMS 客户端应用由以下几步构成: 用JNDI 得到ConnectionFactory 对象: 用ConnectionFactory 创建Connection 对象: 用Connection 对象创建一个或多个JMS Session: 用JNDI 得到目标队列或主题对象,即Destination 对象: 用Session 和Destination 创建MessageProducer 和MessageConsum

RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙

消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以简单地描述为: 当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候. 消息队列主要解决了应用耦合.异步处理.流量削锋等问题. 当前使用较多的消息队列有RabbitMQ.RocketMQ.ActiveMQ.Kafka.ZeroMQ.MetaMq等,而部分数据库如Re

DNS服务相关概念详解

实验环境:RHEL 32Bit DNS服务相关概念详解 DNS是一种域名解析服务,DNS服务的核心以及DNS服务的标准都是基于一个软件来实现的,这个软件叫做BIND(Berkeley Internet Name Domain),互联网上几乎所有的DNS服务都是由BIND来构建的,虽然也有其它的DNS服务构建标准,但是它们的使用语法以及工作机制都和BIND非常接近. ·Linux服务器和Windows服务器的比较 Linux服务器在没有SELinux的时候它的安全级别和Windows服务器的安全级

ActiveMQ讯息传送机制以及ACK机制详解

[http://www.ylzx8.cn/ruanjiangongcheng/software-architecture-design/11922.html] AcitveMQ:消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的. [ActiveMQ消息传送机制]Producer客户端用来发送消息的, Consumer客户端用来消费消息:它们的协同中心就是ActiveMQ broker,broker也

MongoDB系列教程(八):GridFS存储详解

MongoDB系列教程(八):GridFS存储详解 GridFS简介 mongoDB的文档以BSON格式存储,支持二进制的数据类型,当我们把二进制格式的数据直接保存到mongoDB的文档中.但是当文件太大时,例如图片和视频等文件,每个文档的长度是有限的,于是mongoDb会提供了一种处理大文件的规范--GridFS. GridFS实现原理 在GridFS数据库中,默认使用fs.chunks 和fs.files来存储文件,其中fs.files集合存放文件的信息,fs.chunks存放文件的数据,一

Storm概念、原理详解及其应用(一)BaseStorm

本文借鉴官文,添加了一些解释和看法,其中有些理解,写的比较粗糙,有问题的地方希望大家指出.写这篇文章,是想把一些官文和资料中基础.重点拿出来,能总结出便于大家理解的话语.与大多数"wordcount"代码不同的是,并不会有如何运行第一storm代码等内容,只有在运行完代码后,发现需要明白:"知其然,并知其所以然". Storm是什么?为什么要用Storm?为什么不用Spark? 第一个问题,以下概念足以解释: Storm是基于数据流的实时处理系统,提供了大吞吐量的实

完成端口(Completion Port)详解(转)

手把手叫你玩转网络编程系列之三    完成端口(Completion Port)详解                                                              ----- By PiggyXP(小猪) 前 言 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿之中……酝酿了两年之后,终于决定开始动笔了,但愿还不算晚….. 这篇文档我非常详细并且图文并茂的介绍了关于网络编程模型中完成端口的方方

Linux 程序设计学习笔记----终端及串口编程基础之概念详解

转载请注明出处,谢谢! linux下的终端及串口的相关概念有: tty,控制台,虚拟终端,串口,console(控制台终端)详解 部分内容整理于网络. 终端/控制台 终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 1.终端 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种. 控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.

Oracle执行计划详解

 简介: 本文全面详细介绍oracle执行计划的相关的概念,访问数据的存取方法,表之间的连接等内容. 并有总结和概述,便于理解与记忆! +++ 目录 --- 一.相关的概念 Rowid的概念 Recursive Sql概念 Predicate(谓词) DRiving Table(驱动表) Probed Table(被探查表) 组合索引(concatenated index) 可选择性(selectivity) 二.oracle访问数据的存取方法 1) 全表扫描(Full Table Scan