activemq master-slave集群安装文档
activemq主备文件共享安装配置(NFSV4)
简介 (2)概述 (2)硬件环境说明 (2)软件环境说明 (2)安装步骤 (3)安装 (3)环境配置 (3)主从配置 (3)启动MQ (5)验证 (5)停止 (6)NFS4安装与配置 (7)背景要求 (7)NFS安装 (7)配置共享 (8)检验手段 (8)简介概述本文档是辅助个人学习与部署基于文件共享方式AcitveMQ主备配置与测试。
硬件环境说明内存:>1GbCPU:>1GHz硬盘:>8G软件环境说明软件名称备注CentOS 6.2 x64jdk-7u17-linux-x64.tar.gzapache-activemq-5.8.0-bin.tar.gzapache-ant-1.9.0-bin.tar.gz安装步骤安装CentOS 6.2安装选择BasicServer模式,其他全部默认tar –xzvf jdk-7u17-linux-x64.tar.gz -C /usr/javatar –xzvf apache-activemq-5.8.0-bin.tar.gz -C /usr/localtar –xzvf apache-ant-1.9.0-bin.tar.gz -C /usr/local环境配置/etc/profile尾部追加以下配置ACTIVEMQ_HOME=/usr/local/apache-activemq-5.8.0ANT_HOME=/usr/local/apache-ant-1.9.0JA V A_HOME=/usr/java/jdk1.7.0_17export ACTIVEMQ_HOMEexport ANT_HOMEexport JA V A_HOMEexport PA TH=$ACTIVEMQ_HOME/bin:$JA V A_HOME/bin:$ANT_HOME/bin:$PA TH 主从配置1、配置统一KahaDB文件目录主服务器$ACTIVEMQ_HOME/conf/activem q.xml……<broker xmlns="/schema/core" brokerName="localhost" dataDirectory="/nfs4exports">……<!--Configure message persistence for the broker. The default persistencemechanism is the KahaDB store (identified by the kahaDB tag).For more information, see:/persistence.html--><persistenceAdapter><kahaDB directory="/nfs4exports/data"/></persistenceAdapter>……从服务器$ACTIVEMQ_HOME/conf/activem q.xml……<broker xmlns="/schema/core" brokerName="localhost" dataDirectory="/nfs4exports">……<!--Configure message persistence for the broker. The default persistencemechanism is the KahaDB store (identified by the kahaDB tag).For more information, see:/persistence.html--><persistenceAdapter><kahaDB directory="/nfs4exports/data"/></persistenceAdapter>……<!--The transport connectors expose ActiveMQ over a given protocol toclients and other brokers. For more information, see:/configuring-transports.html--><transportConnectors><!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --><transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireformat.maxFrameSize=1048576 00"/><!-- <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireformat.maxFrameSize=1 04857600"/> --></transportConnectors>……注释掉amqp协议,才可启动。
ActiveMQ的安装配置
去网站/activemq/apache-activemq/5.8.0/apache-activemq-5.8.0-bin.tar.gz 下载apache-activemq的linux安装包上传至/home/zhuxing/或者直接在/home/zhuxing/运行:wget /activemq/apache-activemq/5.8.0/apache-activemq-5.8.0-bin.tar.g z解压至/usr/apache-activemq-5.8.0:tar -zxvf apache-activemq-5.8.0-bin.tar.gz-C /usr(会自动在/usr目录下生成apache-activemq-5.8.0文件夹)cd/usr/apache-activemq-5.8.0/binchmod +x activemqcd/usr/apache-activemq-5.8.0/confcpactivemq.xmlactivemq.xml.bkifconfig记下ipviactivemq.xml将<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections= 1000&wireformat.maxFrameSize=104857600"/>中的0.0.0.0改为上一步的ip启动MQcd/usr/apache-activemq-5.8.0/bin运行./activemq或./activemqstart> /usr/apache-activemq-5.8.0/data/jmslog 2>&1 &(建议)运行ps -ef|grepactivemq发现有pid则说明activemq已启动,或登陆主机访问http://localhost:8161/admin,能够访问表明启动成功此后台的登陆名和密码一般为:admin开启61616端口访问vi /etc/sysconfig/iptablesadd:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp--dport61616-j ACCEPT/etc/rc.d/init.d/iptables restart设置开机启动vi /etc/rc.d/rc.localadd:/usr/apache-activemq-5.8.0/bin/activemqstart>/usr/apache-activemq-5.8.0/data/jmslog2>&1 &。
activemq配置说明
activemq配置说明Activemq配置说明1 概述以及activemq集群方案选择 (2)1.1 consumers的集群 (2)1.2 brokers的集群 (2)1.3 集群方案的选择 (2)2 服务端配置activemq配置 (2)2.1 服务端配置activemq.xml (2)2.2 客户端配置backend-mq-consumer.xml (3)3 测试 (4)3.1 采用单机方式,同步方式 (4)3.2 采用单机方式,异步方式 (4)4 待解决的问题 (5)1概述以及activemq集群方案选择1.1consumers的集群ActiveMQ支持订阅同一个queue的consumers上的集群。
如果一个consumer失效,那么所有未被确认(unacknowledged)的消息都会被发送到这个queue上其它的consumers。
如果某个consumer的处理速度比其它consumers更快,那么这个consumer 就会消费更多的消息。
1.2brokers的集群在一个网络内运行多个brokers或者stand alone brokers时存在一个问题,这就是消息在物理上只被一个broker持有,因此当某个broker失效,那么你只能等待直到它重启后,这个broker上的消息才能够被继续发送(如果没有设置持久化,那么在这种情况下,消息将会丢失)。
1.3集群方案的选择经筛选我们采用主--从方式,Master Slave 背后的想法是,消息被复制到slave broker,因此即使master broker遇到了像硬件故障之类的错误,你也可以立即切换到slave broker而不丢失任何消息。
Master Slave是目前ActiveMQ推荐的高可靠性和容错的解决方案。
并且我们采用文件系统做持久化,即:Shared File System Master Slave。
可以运行多个broker,这些broker共享数据目录。
activemq master-slave集群安装文档
ActiveMQ master slave集群安装手册1.简介在一个网络内运行多个brokers或者stand alone brokers时存在一个问题,这就是消息在物理上只被一个broker持有,因此当某个broker失效,那么你只能等待直到它重启后,这个broker上的消息才能够被继续发送(如果没有设置持久化,那么在这种情况下,消息将会丢失)。
Master Slave 背后的想法是,消息被复制到slave broker,因此即使master broker遇到了像硬件故障之类的错误,你也可以立即切换到slave broker而不丢失任何消息。
Master Slave是目前ActiveMQ推荐的高可靠性和容错的解决方案。
主要有Pure Master Slave、Shared File System Master Slave、JDBC Master Slave三种。
Master Broker和Slave Broker可以部署在同一台机器上,也不可部署在不同的机器上。
本文档介绍JDBC Master Slave的安装和验证步骤,为了保证高可用性Master Broker和Slave Broker部署在不用的服务器上。
Master Broker和Slave Broker的配置基本一致,谁先启动获得数据库的锁谁就是Master Broker。
2.安装前准备安装环境操作系统:Red Hat Enterprise Linux 5JDK版本:JRockit JDK 1.5.0_12-b04activemq版本:apache-activemq-5.4.2数据库:oracle 10服务器:需要两台服务器。
文档中以HOST01和HOST02标示这两台服务器软件准备1.安装JDK,并设置JAVA_HOME、PATH等环境变量。
使用java –version验证java安装和环境变量设置2.下载apache-activemq-5.4.2,下载地址为:/dyn/closer.cgi?path=%2Factivemq%2Fapache-active mq%2F5.4.2%2Factivemq-parent-5.4.2-source-release.tar.gz3.准备oracle 10的JDBC驱动程序ojdbc14.jar3.安装步骤Master broker的安装将Master broker安装在HOST01主机上,以下步骤均在HOST01主机上进行1.将apache-activemq-5.4.2-bin.tar.gz和ojdbc14.jar上传到linux下active的安装目录。
linux下activemq安装与配置
linux下activemq安装与配置什么是消息中间件(MQ)?1.1 为什么会需要消息队列(MQ)? 主要原因是由于在⾼并发环境下,由于来不及同步处理,请求往往会发⽣堵塞,⽐如说,⼤量的insert,update之类的请求同时到达MySQL,直接导致⽆数的⾏锁表锁,甚⾄最后请求会堆积过多,从⽽触发too many connections错误。
通过使⽤消息队列,我们可以异步处理请求,从⽽缓解系统的压⼒。
2.2 什么是消息中间件 消息中间件利⽤⾼效可靠的消息传递机制进⾏平台⽆关的数据交流,并基于数据通信来进⾏分布式系统的集成。
通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
对于消息中间件,常见的⾓⾊⼤致也就有Producer(⽣产者)、Consumer(消费者) 常见的消息中间件产品: (1)ActiveMQ ActiveMQ 是Apache出品,最流⾏的,能⼒强劲的开源消息总线。
ActiveMQ 是⼀个完全⽀持JMS1.1和J2EE 1.4规范的 JMS Provider实现。
我们在本次课程中介绍 ActiveMQ的使⽤。
(2)RabbitMQ AMQP协议的领导实现,⽀持多种场景。
淘宝的MySQL集群内部有使⽤它进⾏通讯,OpenStack开源云平台的通信组件,最先在⾦融⾏业得到运⽤。
(3)ZeroMQ 史上最快的消息队列系统 (4)Kafka Apache下的⼀个⼦项⽬。
特点:⾼吞吐,在⼀台普通的服务器上既可以达到10W/s的吞吐速率;完全的分布式系统。
适合处理海量数据。
是Apache的⼀个开源项⽬,它是⼀个能⼒强劲的开源消息总线,也是⼀个中间件产品。
它是JMS的⼀个实现。
⾸先了解⼀下JMSJMS(Java Messaging Service)是Java平台上有关⾯向消息中间件的技术规范,它便于消息系统中的Java应⽤程序进⾏消息交换,并且通过提供标准的产⽣、发送、接收消息的接⼝简化企业应⽤的开发。
1ACTIVEMQ安装与配置
ActiveMQ安装与配置1、环境:Windows XPapache-activemq-5.2.0-bin.zip2、安装解压缩到apache-activemq-5.2.0-bin.zip到一个目录,比如C:\apache-activemq-5.2.03、配置配置就在C:\apache-activemq-5.2.0\conf目录下三个文件activemq.xmlcredentials.propertieslog4j.properties4、启动ActiveMQ运行C:\apache-activemq-5.2.0\bin\activemq.bat5、测试ActiveMQ默认使用的TCP连接端口是61616,通过查看该端口的信息可以测试ActiveMQ是否成功启动netstat-an|find"61616" C:\Documents and Settings\Administrator>netstat-an|find"61616"TCP0.0.0.0:616160.0.0.0:0LISTENING 6、监控ActiveMQ5.0版本默认启动时,启动了内置的jetty服务器,提供一个demo应用和用于监控ActiveMQ的admin应用。
admin:http://127.0.0.1:8161/admin/demo:http://127.0.0.1:8161/demo/具体端口查看:apache-activemq-5.2.0/conf/activemq.xml<jetty xmlns="/schemas/jetty/1.0"><connectors><nioConnector port="8161"/></connectors><handlers><webAppContext contextPath="/admin"resourceBase="${active mq.base}/webapps/admin"logUrlOnStart="true"/><!--<webAppContext contextPath="/demo"resourceBase="${active mq.base}/webapps/demo"logUrlOnStart="true"/><webAppContext contextPath="/fileserver"resourceBase="${ac tivemq.base}/webapps/fileserver"logUrlOnStart="true"/>--></handlers></jetty>从官方下载的ActiveMQ中下载的文件解压后,默认JMX的关闭的<!--Use the following to configure how ActiveMQ is exposed in JMX--> <managementContext><managementContext createConnector="false"/></managementContext>需要对之进行修改,打开JMX的访问<managementContext><managementContext createConnector="true"connectorPort="1 199"/></managementContext>在启动的过程中注意观察以下输出的结果:INFO ManagementContext-JMX consoles can connect to s ervice:jmx:rmi:///jndi/rmi://localhost:1199/jmxrmiINFO TransportServerThreadSupport-Listening for connections at:tcp://q a-qd-63-17:61616ActiveMQ问题记录/1081650/384063ActiveMQ的服务是随机器启动的(当你安装了他的服务之后,默认是不安装的,不过有时候会不经意安装),这时候你再用Spring启动ActiveMQ就会报如上的错误。
ActiveMQ集群搭建
8
//3.开启连接
9
connection.start();
10
//4.创建一个session对象 提供发送消息等方法
11
// 第一个参数:表示是否开启分布式事务(JTA) 一般是false 不开启。
12
// 第二个参数:就是设置消息的应答模式
13
// 如果 第一个参数为false时,第二个参数设置才有意义。用的是自动应答
37
@Override
38
public void onMessage(Message message) {
39
if(message instanceof TextMessage){
40
TextMessage message2 = (TextMessage) message;
41
try {
42
System.out.println("接收的消息为"+message2.getText());
29
}
30
}*/
31
//第二种
32
// 设置一个监听器
33
// System.out.println("start");
34
// 这里其实开辟了一个新的线程
35
consumer.setMessageListener(new MessageListener() {
36
//当有消息的时候会执行以下的逻辑
21
// 8.发送消息
22
producer.send(textMessage);
23
//9.关闭资源
24
producer.close();
activemq安装使用教程
activemq安装使⽤教程⼀、下载安装然后解压即可,apache的东西解压后就可以使⽤了。
⼆、启动在安装⽬录的bin⽬录下:activemq start就可以启动了。
访问localhost:8161就可以访问如果你想修改⽤户名和密码的话,在conf/jetty-realm.properties中修改即可。
然后重启就可以。
三、demo启动activemq 中的 demoactivemq start xbean:file:../examples/conf/activemq-demo.xml访问:http://localhost:8161/demo/然后就可以收发消息了。
四、⾃⼰使⽤介绍web项⽬中spring集成activemqmaven依赖:<dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-all</artifactId><version>5.15.0</version></dependency><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-spring</artifactId><version>5.15.0</version></dependency>applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd /schema/context /schema/context/spring- <!--设置注解类所在的jar包--><context:component-scan base-package="com.linewell" /><!-- 连接池 --><bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop"><property name="connectionFactory"><bean class="org.apache.activemq.ActiveMQConnectionFactory"><property name="brokerURL" value="tcp://localhost:61616"/></bean></property></bean><!-- 连接⼯⼚ --><bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"><property name="brokerURL" value="tcp://localhost:61616"/></bean><!-- 配置消息⽬标 --><bean id="destination" class="mand.ActiveMQQueue"><!-- ⽬标,在ActiveMQ管理员控制台创建 http://localhost:8161/admin/queues.jsp --><constructor-arg index="0" value="sagedragon.mq.queue"/></bean><!-- 消息模板 --><bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"><property name="connectionFactory" ref="activeMQConnectionFactory"/><property name="defaultDestination" ref="destination"/><property name="messageConverter"><bean class="org.springframework.jms.support.converter.SimpleMessageConverter"/></property></bean></beans>web.xml配置<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:applicationContext.xml</param-value></context-param><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/</url-pattern></filter-mapping><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener><servlet><servlet-name>MqtestServlet</servlet-name><servlet-class>com.linewell.servlets.MqtestServlet</servlet-class></servlet><servlet-mapping><servlet-name>MqtestServlet</servlet-name><url-pattern>/activemq/MqtestServlet</url-pattern></servlet-mapping></web-app>发送者:package com.linewell.activemq;import org.springframework.jms.core.JmsTemplate;import org.springframework.jms.core.MessageCreator;import org.springframework.stereotype.Service;import javax.jms.JMSException;import javax.jms.MapMessage;import javax.jms.Message;import javax.jms.Session;import java.util.Date;import javax.annotation.Resource;@Servicepublic class SpringSender {@Resourceprivate JmsTemplate jmsTemplate;public void sendMsg() {jmsTemplate.send(new MessageCreator() {public Message createMessage(Session session) throws JMSException {MapMessage message = session.createMapMessage();System.out.println("开始发送消息...");message.setString("message", "current system time: " + new Date().getTime());return message;}});}}接收者:package com.linewell.activemq;import org.springframework.context.ApplicationContext;import org.springframework.context.support.FileSystemXmlApplicationContext;import org.springframework.jms.core.JmsTemplate;import org.springframework.stereotype.Service;import javax.annotation.Resource;import java.util.Map;@Servicepublic class SpringReceiver {@Resourceprivate JmsTemplate jmsTemplate;public void receiveMsg() {while (true) {Map<String, Object> map = (Map<String, Object>) jmsTemplate.receiveAndConvert(); System.out.println("收到消息:" + map.get("message"));}}}。
activeMQ集群配置
activeMQ集群配置目录ACTIVEMQ集群配置 (1)1ACTIVEMQ集群简介 (2)2MASTER/SLAVE模式简介 (3)2.1安装环境 (3)2.2测试服务器描述 (3)3JDK安装(略) (4)4ACTIVEMQ安装(PURE MASTER-SLAVE模式) (4)4.1主ACTIVE MQ安装 (4)4.2备ACTIVEMQ配置 (4)5ACTIVEMQ的BROKER CLUSTER模式 (6)5.1软件安装(略) (6)5.2配置文件修改 (6)1 activeMQ集群简介ActiveMQ可以做broker的集群(broker_cluster),也可以做master-slave方式的集群。
前者能在多个broker 之前fail-over和load-balance,但是在某个节点出故障时,可能导致消息丢失;而后者能实时备份消息,和fail-over,但是不能load-balance。
broker cluser的方式,在一个broker上发送的消息可以在其它的broker上收到。
当一个broker失效时,客户端可以自动的转到别的broker上运行,多个broker可以同时提供服务,但是消息只存储在一个broker上,如果那个broker失效了,那么客户端直到它重新启动后才能收到该broker 上的消息,假如很不幸,那个broker的存储介质坏了,那么消息就丢失掉了。
Master-slave方式中,只有master提供服务,slave只是实时的备份master的数据,所以消息不会丢失。
当master失效时,slave会自动升为master,客户端会自动转到slave上工作,所以能fail-over。
由于只有master 提供服务,所以不能将负载分到多个broker上。
其实单个broker的性能已经是相当的惊人了,足够公司目前的需要了,而公司并不希望丢失任何数据,所以我们选择使用master-slave模式。
ActiveMQ安装及部署教程图解
ActiveMQ安装及部署教程图解ActiveMQ是Apache的⼀个开源项⽬,它是⼀个功能强劲的开源消息总线,也是⼀个中间件产品,它是JMS的⼀个实现。
在介绍ActiveMQ之前,先来复习⼀下J2EE中的JMS规范。
JMS 即Java消息服务应⽤程序接⼝,是Java Message Service的缩写,是⼀个Java平台中关于⾯向消息中间件(manager of managers,缩写为MOM)的API,⽤于在两个应⽤程序之间,或分布式系统中发送消息,进⾏异步通信;我们可以利⽤它在不同系统和不同的模块之间实现集成。
Java消息服务是⼀个与具体平台⽆关的API,绝⼤多数MOM提供商都对JMS提供⽀持。
JMS有两个好处,第⼀个就是让模块之间或者系统之间的耦合度降低,第⼆个是异步通信。
ActiveMQ是⼀个JMS消息代理的实现。
JMS的消息机制有两种模式,⼀种是点对点(Point to Point,⼀对⼀)消息模式,表现为队列的形式;发送的消息,只能被⼀个接收者接收。
另⼀种是发布/订阅消息模式(⼀对多),可以被多个订阅者订阅,类似于群发。
1、到官⽹下载安装包官⽹⾥有Windows和Linux版本,请根据需要下载对应的版本。
注意:5系列的版本最好使⽤JDK8及以上,低于JDK8可以使⽤4.x。
2、下载和启动下载之后,解压apache-activema-5.15.13-bin.zip包,进⼊bin⽬录:请确保系统已经安装Java8或者以上版本。
在bin⽬录发现有 win 32 和 win 64 两个⽂件夹,这2个⽂件夹分别对应 windows 32 位和 windows 64 位操作系统的启动脚本。
选择系统对应的版本,例如电脑是64位的,则进⼊win64⽂件夹,找到启动脚步activemq.bat,双击即可启动。
启动成功后,Shell窗⼝视图如下:截图中容易找到⽇志信息 ConnectorwsStarted。
activemq配置安装
activemq配置安装1、了解JMS查看百度百科https:///item/JMS/2836691?fr=aladdin2、了解ActiveMQhttps:///item/ActiveMQ3、mq的安装 2、放到安装的路径进⾏解压tar -zxvf apache-activemq-5.15.5-bin.tar.gz 3、修改端⼝(不改为默认端⼝) ActiveMQ 需要⽤到两个端⼝ ⼀个是消息通讯的端⼝(默认为 61616) 打开conf⽬录下得到activemq.xml的配置⽂件,找到下⾯这端代码,把61616替换成你的新端⼝号 <transportConnectors><!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB--><transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/><transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/><transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/><transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/><transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/></transportConnectors>⼀个是管理控制台端⼝(默认为 8161)可在 conf/jetty.xml 中修改,如下:<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start"><!-- the default port number for the web console --><property name="host" value="0.0.0.0"/>service iptables restart<property name="port" value="8161"/> </bean>4、修改防⽕墙打开对应端⼝vi /etc/sysconfig/iptables 添加-A INPUT -m state --state NEW -m tcp -p tcp --dport 61616 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 8161 -j ACCEPT重启防⽕墙:service iptables restart5、启动:ActiveMQ/bin下./activemq start 6、查看是否启动成功查看activemq端⼝是否打开(默认61616)netstat -an | grep 61616 ⽤户名:admin 密码:admin出现此图成功来源:/content-4-170801.html。
ActiveMQ的消息中间件及安装说明
ActiveMQ的消息中间件及安装说明
AcTIveMQ是Apache出品,最流行的,能力强劲的开源消息总线。
AcTIveMQ是一个完全支持JMS1.1和J2EE 1.4规范的JMS Provider现,尽管JMS规范出台己经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位,可以说AcTIveMQ在业界应用最广泛,当然如果想要有更强大的性能和海量数据处理能力,AcTIveMQ还需要不断的升级版本,80%以上的业务我们使用ActiveMQ以及足够满足需求,当然后续如天猫、淘宝网这种大型的电商网站,尤其是双11这种特殊时间,ActiveMQ 需要进行很复杂的优化源码以及架构设计才能完成,后面我还会介绍更强大的分布式消息中间件,RocketMQ,可以说ActiveMQ是核心,是基础,所以我们必须要掌握好。
1 ActiveMQ Windows 安装说明安装完后的目录:
这时我们启动ActiveMQ,进入bin目录一个32位的一个64位的,我的机子是64位的,打开64位的文件夹找的activemq.bat双击启动。
默认的范围问路径是::8161 注意这里端口是8161这个可以自己改,这时你在浏览器访问时,会弹出一个登陆的界面,默认用户名密码都是admin。
登陆进去如图:
1.1 如何修改端口?
打开conf目录找到jetty.xml文件,打开文件,大概在110行左右。
beanid=jettyPortclass=org.apache.activemq.web.WebConsolePortinit-method=start。
共享文件形式搭建ActiveMQ集群
共享文件形式搭建ActiveMQ集群If you have a SAN or shared file system it can be used to provide high availability such that if a broker is killed, another broker can take over immediately.Ensure your shared file locks workNote that the requirements of this failover system are a distributed file system like a SAN for which exclusive file locks work reliably.If you do not have such a thing available then consider using MasterSlave instead which implements something similar but working on commodity hardware using local file systems which ActiveMQ does the replication.OCFS2 WarningWas testing using OCFS2 and both brokers thought they had the master lock - this is because "OCFS2 only supports locking with 'fcntl' and not 'lockf and flock', therefore mutex file locking from Java isn't supported."FromOCFS2: No cluster-aware flock or POSIX locksGFS: Cluster-wide flocks and POSIX locksNFSv3 WarningIn the event of an abnormal NFSv3 client termination (i.e., the ActiveMQ master broker), the NFSv3 server will not timeout the lock that is held by that client. This effectively renders the ActiveMQ data directory inaccessible because the ActiveMQ slave broker can't acquire the lock and therefore cannot start up. The only solution to this predicament with NFSv3 is to reboot all ActiveMQ instances to reset everything.Use of NFSv4 is another solution because it's design includes timeouts forlocks. When using NFSv4 and the client holding the lock experiences anabnormal termination, by design, the lock is released after 30 seconds,allowing another client to grab the lock. For more information about this, see this blog entryBasically you can run as many brokers as you wish from the same shared file system directory. The first broker to grab the exclusive lock on the file is the master broker. If that broker dies and releases the lock then another broker takes over. The slave brokers sit in a loop trying to grab the lock from the master broker.The following example shows how to configure a broker for Shared File System Master Slave where /sharedFileSystem is some directory on a shared file system. It is just a case of configuring a file based store to use a shared directory.。
ActiveMQ集群搭建
ActiveMQ集群搭建 集群⽅案主要为了解决系统架构中的两个关键问题:⾼可⽤和⾼性能。
ActiveMQ服务的⾼可⽤性是指,在ActiveMQ服务性能不变、数据不丢失的前提下,确保当系统灾难出现时ActiveMQ能够持续提供消息服务,⾼可靠性⽅案最终⽬的是减少整个ActiveMQ停⽌服务的时间。
ActiveMQ服务的⾼性能是指,在保证ActiveMQ服务持续稳定性、数据不丢失的前提下,确保ActiveMQ集群能够在单位时间内吞吐更⾼数量的消息、确保ActiveMQ集群处理单条消息的时间更短、确保ActiveMQ集群能够容纳更多的客户端稳定连接。
下⾯我们分别介绍如何通过多个ActiveMQ服务节点集群⽅式,分别提供热备⽅案和⾼性能⽅案。
最后我们讨论如何将两种⽅案结合在⼀起,最终形成在⽣成环境下使⽤的推荐⽅案。
⼀、⾼可⽤集群以下内容来⾃:::1.1、ActiveMQ+ZooKeeper 伪集群整合伪集群⽅式,即在⼀台主机上部署3个activemq服务(端⼝不同)+3个zookeeper服务(端⼝不同)原理简介:⼀般在部署ActiveMQ集群的时候,更倾向于使⽤基于ZooKeeper的Replicated LevelDB Store⽅式,该⽅式是Master Slave部署⽅案的其中⼀种策略,也是在多台主机实现ActiveMQ集群的主流部署⽅式。
这⾥只保证了⾼可⽤性。
要想保证负载均衡得再结合Broker Clusters 部署⽅案,配置⽹络连接器。
⼯作流程:在ZooKeeper中管理多个Broker节点,根据 Master选举策略让其中⼀个 Broker选举为Master(只有Master才具备对外提供服务的能⼒),剩下Broker为slave。
编码时,client端(消费者)通过failover协议来连接ActiveMQ集群。
1.1.1、ZooKeeper伪集群配置规划--服务端⼝集群通信端⼝节点⽬录/usr/local下zk121812881:3881/zookeeper/zk1zk221822882:3882/zookeeper/zk2/zookeeper/zk3zk321832883:3883集群通信端⼝:第⼀个端⼝是master和slave之间的通信端⼝,默认是2881;第⼆个端⼝是leader选举的端⼝,集群刚启动的时候选举或者leader挂掉之后进⾏新的选举的端⼝默认是3881。
activemq集群的机制
activemq集群的机制如下:
1.Master-Slave部署方式:Master-Slave方式中,只能是Master提
供服务,Slave是实时地备份Master的数据,以保证消息的可靠性。
当Master失效时,Slave会自动升级为Master,客户端会自动连接到Slave上工作。
Master-Slave模式分为三类:PureMasterSlave、SharedFileSystemMasterSlave和JDBCMasterSlave。
多个共享存储目录的应用,谁先启动,谁就可以最早取得共享目录的控制权成为master,其他的应用就只能作为slave。
2.Broker集群:联合多个Broker结点实现集群,使用故障转移协
议failover,当集群中的broker结点挂掉时,客户端会自动连接到集群中的其他broker结点。
3.集群发现:通过静态发送或动态发现,来自动发现集群中的
brokers,客户端能自动检测和连接集群中的broker。
4.网络:这种集群方式可以支持某个broker中的消费者去接收其
他broker中的消息,从而实现负载均衡、提高系统吞吐量。
ActiveMQ集群安装和部署
ActiveMQ集群安装和部署目录1. 准备工作 (2)2. 安装JDK (2)3. 安装ActiveMQ (5)1) 解压ActiveMQ (5)2) 验证 (6)4. ActiveMQ集群配置 (6)1) Master配置 (6)2) Slave配置 (7)11.准备工作两台安装好windows环境的服务器,本文环境是windows2003 Server R2 (SP2) JDK安装包,本文使用的是jdk-7u17-windows-i586.exeActivemq安装包,本文使用的是activemq-5.6.rar2.安装JDK运行exe,点击下一步再下一步就可以了,安装完后设置系统变量,如下图:设置java_home,指向JDK的安装文件夹2在”System variables”中添加classpath,指向jdk的lib文件夹3在”System variables”中添加path,指向jdk的bin文件夹4测试jdk安装是否成功,运行cmd,输入java –version,显示java版本说明jdk安装成功,如下图:3.安装ActiveMQ1)解压ActiveMQ在c盘下创建activemq文件夹,解压ActiveMQ压缩包到这个文件夹。
找到C:\ActiveMQ\bin下的activemq.bat文件,双击打开,显示如下:5接下来测试MQ是否正常运行:2)验证打开浏览器,在地址栏输入:http://localhost:8161/admin,如果能显示如下界面,说明安装成功ActiveMQ需要做集群服务,要在两台服务器上分别安装,选择一台做Master,另外一台做Slave。
Master和Slave的安装方法是一样的,重复以上步骤即可。
4.ActiveMQ集群配置1)Master配置选定一台服务器作为Master,找到Activemq的配置文件夹C:\ActiveMQ\conf,用记事本打开文件activemq.xml,把broker节点的brokername改为”pure_master”,如下图:6打开统计功能插件。
ActiveMQ的安装与使用(springboot版本)
ActiveMQ的安装与使⽤(springboot版本)⼀、安装上官⽹下载tar包tar -zxvf 后进⼊bin/linux-86-64./activimq start启动⼆、使⽤pom⽂件引⼊依赖<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-activemq</artifactId></dependency><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-pool</artifactId></dependency><dependency>application.properties的配置⽂件spring.activemq.broker-url=tcp://39.108.83.105:61616#spring.activemq.broker-url=tcp://127.0.0.1:61616er=spring.activemq.password=spring.activemq.pool.enabled=truespring.activemq.pool.max-connections=50spring.activemq.pool.expiry-timeout=10000spring.activemq.pool.idle-timeout=30000#主题类型消息这个为truespring.jms.pub-sub-domain=true⽣产者代码:@Componentpublic class JMSProducer {@Autowiredprivate JmsTemplate jmsTemplate;public void sendMessage(Destination destination, String message) {this.jmsTemplate.convertAndSend(destination,message);}}消费者代码:@Componentpublic class JMSConsumer {@JmsListener(destination = "myTopic")public void receiveQueue(String msg) {System.out.println(msg);}}调⽤类:@PostMapping("/postTopic")public String postTopic(@RequestBody JSONObject reqBody){ ActiveMQTopic myTopic = new ActiveMQTopic("myTopic"); jmsProducer.sendMessage(myTopic,reqBody.toJSONString());return "成功";}。
ActiveMQ高可用集群方案
ActiveMQ⾼可⽤集群⽅案在⾼并发、对稳定性要求极⾼的系统中,⾼可⽤的是必不可少的,当然ActiveMQ也有⾃⼰的集群⽅案。
从ActiveMQ 5.9开始,ActiveMQ的集群实现⽅式取消了传统的Master-Slave⽅式,增加了基于ZooKeeper + LevelDB 的 Master-Slave 实现⽅式。
相关⽂章:范例项⽬:ActiveMQ的简单实⽤:⼀. ActiveMQ的⾼可⽤原理使⽤ZooKeeper(集群)注册所有的ActiveMQ Broker。
只有其中的⼀个Broker可以提供服务,被视为 Master,其他的 Broker 处于待机状态,被视为Slave。
如果Master因故障⽽不能提供服务,Zookeeper会从Slave中选举出⼀个Broker充当Master。
Slave连接Master并同步他们的存储状态,Slave不接受客户端连接。
所有的存储操作都将被复制到连接⾄ Master的Slaves。
如果Master宕了,得到了最新更新的Slave会成为 Master。
故障节点在恢复后会重新加⼊到集群中并连接Master进⼊Slave模式。
是不是觉得和Redis Sentinel主从⾼可⽤的⽅式很像,这⾥的zookeeper起到的作⽤和reids⾥的sentinel作⽤差不多。
另外,附上官⽅⽂档的⼀则警告,请使⽤者注意。
replicated LevelDB 不⽀持延迟或者计划任务消息。
这些消息存储在另外的LevelDB⽂件中,如果使⽤延迟或者计划任务消息,将不会复制到Slave Broker上,不能实现消息的⾼可⽤。
⼆. ActiveMQ的持久化⽅式ActiveMQ有三种持久化⽅式(在activemq.xml可配):(1) 基于共享⽂件系统(KahaDB,默认)<persistenceAdapter><kahaDB directory="${activemq.data}/kahadb"/></persistenceAdapter>(2) 基于JDBC<persistenceAdapter><jdbcPersistenceAdapter dataSource="#MySQL-DS"/></persistenceAdapter><!--注意:需要添加mysql-connector-java相关的jar包到avtivemq的lib包下--><bean id="MySQL-DS" class="mons.dbcp2.BasicDataSource" destroy-method="close"><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://127.0.0.1:3306/beautyssm_mq?useUnicode=true&characterEncoding=UTF-8"/><property name="username" value="root"/><property name="password" value="xxxx"/></bean>(3) 基于可复制的LevelDB(常⽤于集群)<persistenceAdapter><replicatedLevelDBdirectory="${activemq.data}/leveldb" #数据存储路径replicas="3" #节点个数bind="tcp://0.0.0.0:62621" #⽤于各个节点之间的通讯zkAddress="localhost:2181,localhost:2182,localhost:2183"hostname="localhost"zkPath="/activemq/leveldb-stores"/>#在zookeeper中集群相关数据存放路径</persistenceAdapter>LevelDB是Google开发的⼀套⽤于持久化数据的⾼性能类库。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ActiveMQ master slave集群安装手册1.简介在一个网络内运行多个brokers或者stand alone brokers时存在一个问题,这就是消息在物理上只被一个broker持有,因此当某个broker失效,那么你只能等待直到它重启后,这个broker上的消息才能够被继续发送(如果没有设置持久化,那么在这种情况下,消息将会丢失)。
Master Slave 背后的想法是,消息被复制到slave broker,因此即使master broker遇到了像硬件故障之类的错误,你也可以立即切换到slave broker而不丢失任何消息。
Master Slave是目前ActiveMQ推荐的高可靠性和容错的解决方案。
主要有Pure Master Slave、Shared File System Master Slave、JDBC Master Slave三种。
Master Broker和Slave Broker可以部署在同一台机器上,也不可部署在不同的机器上。
本文档介绍JDBC Master Slave的安装和验证步骤,为了保证高可用性Master Broker和Slave Broker部署在不用的服务器上。
Master Broker和Slave Broker的配置基本一致,谁先启动获得数据库的锁谁就是Master Broker。
2.安装前准备安装环境操作系统:Red Hat Enterprise Linux 5JDK版本:JRockit JDK 1.5.0_12-b04activemq版本:apache-activemq-5.4.2数据库:oracle 10服务器:需要两台服务器。
文档中以HOST01和HOST02标示这两台服务器软件准备1.安装JDK,并设置JAVA_HOME、PATH等环境变量。
使用java –version验证java安装和环境变量设置2.下载apache-activemq-5.4.2,下载地址为:/dyn/closer.cgi?path=%2Factivemq%2Fapache-active mq%2F5.4.2%2Factivemq-parent-5.4.2-source-release.tar.gz3.准备oracle 10的JDBC驱动程序ojdbc14.jar3.安装步骤Master broker的安装将Master broker安装在HOST01主机上,以下步骤均在HOST01主机上进行1.将apache-activemq-5.4.2-bin.tar.gz和ojdbc14.jar上传到linux下active的安装目录。
后续以$ACTIVEMQ_WORK_DIR代表active的安装目录2.在$ACTIVEMQ_WORK_DIR目录下解压缩apache-activemq-5.4.2-bin.tar.gz文件,解压缩后activeMQ相关文件放在$ACTIVEMQ_WORK_DIR/apache-activemq-5.4.2目录下3.将ojdbc14.jar拷贝到$ACTIVEMQ_WORK_DIR/apache-activemq-5.4.2/lib目4.打开并且修改$ACTIVEMQ_WORK_DIR/apache-activemq-5.4.2/conf目录下的activemq.xml文件A.修改broker的名字找到修改为B.修改持久化找到修改为并且在</broker>后面添加数据库连接,语句如下:<bean id="oracle-ds" class="mons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/><property name="url" value="jdbc:oracle:thin:@168.7.61.23:1521:orcltmp"/><property name="username" value="user"/><property name="password" value="password"/><property name="maxActive" value="200"/><property name="poolPreparedStatements" value="true"/></bean>C.修改监听端口号找到修改为D.定义死队列规则找到<policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb"><!-- Use VM cursor for better latencyFor more information, see:/message-cursors.html<pendingQueuePolicy><vmQueueCursor/></pendingQueuePolicy>--></policyEntry>修改为:<policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb"><deadLetterStrategy><individualDeadLetterStrategy queuePrefix="DLQ.ICFP." useQueueForQueueMessages="true" /></deadLetterStrategy><!-- Use VM cursor for better latencyFor more information, see:/message-cursors.html<pendingQueuePolicy><vmQueueCursor/></pendingQueuePolicy>--></policyEntry>注:标有红色部分根据实际情况配置。
Slave Broker的安装将Slave broker安装在HOST02主机上,以下步骤均在HOST02主机上进行。
Master broker与Slave Broker安装的差异处所在主机不一致和步骤四中修改broker的名字不一致外,其它的无差异。
1.将apache-activemq-5.4.2-bin.tar.gz和ojdbc14.jar上传到linux下active的安装目录。
后续以$ACTIVEMQ_WORK_DIR代表active的安装目录2.在$ACTIVEMQ_WORK_DIR目录下解压缩apache-activemq-5.4.2-bin.tar.gz文件,解压缩后activeMQ相关文件放在$ACTIVEMQ_WORK_DIR/apache-activemq-5.4.2目录下3.将ojdbc14.jar拷贝到$ACTIVEMQ_WORK_DIR/apache-activemq-5.4.2/lib目录下4.打开并且修改$ACTIVEMQ_WORK_DIR/apache-activemq-5.4.2/conf目录下的activemq.xml文件A.修改broker的名字找到修改为B.修改持久化找到修改为并且在</broker>后面添加数据库连接,语句如下:<bean id="oracle-ds" class="mons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/><property name="url" value="jdbc:oracle:thin:@168.7.61.23:1521:orcltmp"/><property name="username" value="user"/><property name="password" value="password"/><property name="maxActive" value="200"/><property name="poolPreparedStatements" value="true"/></bean>C.修改监听端口号找到修改为D.定义死队列规则找到<policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb"><!-- Use VM cursor for better latencyFor more information, see:/message-cursors.html<pendingQueuePolicy><vmQueueCursor/></pendingQueuePolicy>--></policyEntry>修改为:<policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb"> <deadLetterStrategy><individualDeadLetterStrategy queuePrefix="DLQ.ICFP." useQueueForQueueMessages="true" /></deadLetterStrategy><!-- Use VM cursor for better latencyFor more information, see:/message-cursors.html<pendingQueuePolicy><vmQueueCursor/></pendingQueuePolicy>--></policyEntry>注:标有红色部分根据实际情况配置。