ActiveMQ版本5.10.0,3个节点 failover配置
1.从官网下载MQ,传送到三台服务器,并解压
2.修改配置文件
1).brokerId根据服务器进行编号
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="broker-group" brokerId="broker-id-service-node2" dataDirectory="${activemq.data}">
2).消息挂起的数目设置,此处设置为1000条
<pendingMessageLimitStrategy>
<constantPendingMessageLimitStrategy limit="1000"/>
</pendingMessageLimitStrategy>
3).消息持久化策略设置
此处以leveldb为例
<persistenceAdapter>
<replicatedLevelDB
directory="/data0/mq/app_datas/mq/activemq-lvdb-data"
replicas="3"
bind="tcp://0.0.0.0:0"
zkAddress="10.50.40.150:2181,10.50.40.151:2181,10.50.40.152:2181"
zkSessionTmeout="6s"
zkPath="/activemq/basic-service/leveldb-stores"
hostname="10.50.40.183" />
</persistenceAdapter>
directory 表示持久化的消息保存在服务器上的路径,注意一定要先创建好路径
replicas 表示MQ集群的节点数量
bind 绑定的机器的地址与端口,此处0.0.0.0:0 表示端口随机,本机所有可用IP
zkAddress mq集群leveldb存储方式依赖的zookeeper集群地址
zkSessionTmeout 表示MQ与zookeeper集群的会话超时时间,注意拼写是zkSessionTmeout ,不是zkSessionTimeout
zkPath mq在zookeeper集群上创建的znode节点的路径
hostname mq机器的host
4)协议配置
可以根据选择进行编辑修改,我自己搭建的比较简单,没有删除协议,也没有更改协议,直接使用默认端口
<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>
协议简介
AMQP协议
即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。
MQTT协议
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。
OpenWire协议
OpenWire协议在网上没有对应的介绍,似乎是activeMQ自己定义的一种协议,官方网站对其的介绍如下:
OpenWire is our cross language Wire Protocol to allow native access to ActiveMQ from a number of different languages and platforms. The Java OpenWire transport is the default transport in ActiveMQ 4.x or later. For other languages see the following…
stomp协议
STOMP,Streaming Text Orientated Message Protocol,是流文本定向消息协议,是一种为MOM(Message Oriented Middleware,面向消息的中间件)设计的简单文本协议。
ws协议
官网描述如下
This transport uses the new HTML5 WebSockets to exchange messages with the broker. For more information see the WebSocketsTransport Reference
tips
纯Java开发,建议 openwire也就可以了。openwire是Java的序列化方式,其它语言无法支持。 amqp和stomp都多语言支持的,Java,Python都能混搭,消息相互通用。
PHP一般使用stomp协议
客户端根据自己的需要,不同协议对应好mq服务端的协议端口即可。
3.配置文件修改
如有需要,可以修改mq启动脚本中关于java堆的大小配置
# Set jvm memory configuration
if [ -z "$ACTIVEMQ_OPTS_MEMORY" ] ; then
ACTIVEMQ_OPTS_MEMORY="-Xms1G -Xmx2G"
fi
4.启动、重启、停止命令
进入mq的bin目录
./activemq start
./activemq stop
./activemq restart
查看mq端口以及日志文件确定是否正常启动即可。
最后在zookeeper上查看在mq中配置的leveldb的znode地址,是否已经创建出于mq集群一样的节点(此处是3个),通过zookeeper节点可以看到mq的主节点,然后可以使用http方式进行访问http://primarynode:8161/
一般没有做其他修改的话,默认的web管理端口就是8161,默认的用户名以及密码都是 admin/admin
1.从官网下载MQ,传送到三台服务器,并解压
2.修改配置文件
1).brokerId根据服务器进行编号
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="broker-group" brokerId="broker-id-service-node2" dataDirectory="${activemq.data}">
2).消息挂起的数目设置,此处设置为1000条
<pendingMessageLimitStrategy>
<constantPendingMessageLimitStrategy limit="1000"/>
</pendingMessageLimitStrategy>
3).消息持久化策略设置
此处以leveldb为例
<persistenceAdapter>
<replicatedLevelDB
directory="/data0/mq/app_datas/mq/activemq-lvdb-data"
replicas="3"
bind="tcp://0.0.0.0:0"
zkAddress="10.50.40.150:2181,10.50.40.151:2181,10.50.40.152:2181"
zkSessionTmeout="6s"
zkPath="/activemq/basic-service/leveldb-stores"
hostname="10.50.40.183" />
</persistenceAdapter>
directory 表示持久化的消息保存在服务器上的路径,注意一定要先创建好路径
replicas 表示MQ集群的节点数量
bind 绑定的机器的地址与端口,此处0.0.0.0:0 表示端口随机,本机所有可用IP
zkAddress mq集群leveldb存储方式依赖的zookeeper集群地址
zkSessionTmeout 表示MQ与zookeeper集群的会话超时时间,注意拼写是zkSessionTmeout ,不是zkSessionTimeout
zkPath mq在zookeeper集群上创建的znode节点的路径
hostname mq机器的host
4)协议配置
可以根据选择进行编辑修改,我自己搭建的比较简单,没有删除协议,也没有更改协议,直接使用默认端口
<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>
协议简介
AMQP协议
即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。
MQTT协议
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。
OpenWire协议
OpenWire协议在网上没有对应的介绍,似乎是activeMQ自己定义的一种协议,官方网站对其的介绍如下:
OpenWire is our cross language Wire Protocol to allow native access to ActiveMQ from a number of different languages and platforms. The Java OpenWire transport is the default transport in ActiveMQ 4.x or later. For other languages see the following…
stomp协议
STOMP,Streaming Text Orientated Message Protocol,是流文本定向消息协议,是一种为MOM(Message Oriented Middleware,面向消息的中间件)设计的简单文本协议。
ws协议
官网描述如下
This transport uses the new HTML5 WebSockets to exchange messages with the broker. For more information see the WebSocketsTransport Reference
tips
纯Java开发,建议 openwire也就可以了。openwire是Java的序列化方式,其它语言无法支持。 amqp和stomp都多语言支持的,Java,Python都能混搭,消息相互通用。
PHP一般使用stomp协议
客户端根据自己的需要,不同协议对应好mq服务端的协议端口即可。
3.配置文件修改
如有需要,可以修改mq启动脚本中关于java堆的大小配置
# Set jvm memory configuration
if [ -z "$ACTIVEMQ_OPTS_MEMORY" ] ; then
ACTIVEMQ_OPTS_MEMORY="-Xms1G -Xmx2G"
fi
4.启动、重启、停止命令
进入mq的bin目录
./activemq start
./activemq stop
./activemq restart
查看mq端口以及日志文件确定是否正常启动即可。
最后在zookeeper上查看在mq中配置的leveldb的znode地址,是否已经创建出于mq集群一样的节点(此处是3个),通过zookeeper节点可以看到mq的主节点,然后可以使用http方式进行访问http://primarynode:8161/
一般没有做其他修改的话,默认的web管理端口就是8161,默认的用户名以及密码都是 admin/admin