烂泥:ActiveMQ的安装与配置

本文由ilanniweb微信公众号提供友情赞助,首发于烂泥行天下

jenkins技术分享QQ群:571981257

最近公司的ActiveMQ集群经常出现无法访问的问题,每次都是要重启ActiveMQ才能正常使用。

因为以前对ActiveMQ没有接触过,刚好趁这次机会好好学习下有关activemq的知识。

先从activemq的安装与配置开始。

PS:OS为centos7,经过多次实践证明activemq集群和zookeeper集群强烈建议部署在同一台服务器上,否则随着时间的增加,activemq集群经常出现假死的情况。

一、JMS支持的消息传递模型

JMS支持两种消息传递模型:队列(Queue)和主题(Topic)。

1.1 点对点传递模型

点对点(point-to-point,简称PTP)Queue消息传递模型。

通过该消息传递模型,一个应用程序(即消息生产者)可以向另外一个应用程序(即消息消费者)发送消息。

在此传递模型中,消息目的地类型是队列(即Destination接口实现类实例由Session接口实现类实例通过调用其createQueue方法并传入队列名称而创建)。

消息首先被传送至消息服务器端特定的队列中,然后从此对列中将消息传送至对此队列进行监听的某个消费者。同一个队列可以关联多个消息生产者和消息消费者,但一条消息仅能传递给一个消息消费者。

如果多个消息消费者正在监听队列上的消息,JMS消息服务器将根据“先来者优先”的原则确定由哪个消息消费者接收下一条消息。

如果没有消息消费者在监听队列,消息将保留在队列中,直至消息消费者连接到队列为止。这种消息传递模型是传统意义上的懒模型或轮询模型。

在此模型中,消息不是自动推动给消息消费者的,而是要由消息消费者从队列中请求获得。

1.2 发布/订阅传递模型

发布/订阅(publish/subscribe,简称pub/sub)Topic消息传递模型。

通过该消息传递模型,应用程序能够将一条消息发送给多个消息消费者。在此传送模型中,消息目的地类型是主题(即Destination接口实现类实例由Session接口实现类实例通过调用其createTopic方法并传入主题名称而创建)。

消息首先由消息生产者发布至消息服务器中特定的主题中,然后由消息服务器将消息传送至所有已订阅此主题的消费者。

主题目标也支持长期订阅。长期订阅表示消费者已注册了主题目标,但在消息到达目标时该消费者可以处于非活动状态。

当消费者再次处于活动状态时,将会接收该消息。如果消费者均没有注册某个主题目标,该主题只保留注册了长期订阅的非活动消费者的消息。

与PTP消息传递模型不同,pub/sub消息传递模型允许多个主题订阅者接收同一条消息。JMS一直保留消息,直至所有主题订阅者都接收到消息为止。

pub/sub消息传递模型基本上是一个推模型。在该模型中,消息会自动广播,消息消费者无须通过主动请求或轮询主题的方法来获得新的消息。

具体区别对比如下:

类型 Topic Queue
概要 Publish Subscribe messaging发布订阅消息 Point-to-Point点对点
有无状态 Topic数据默认不落地,是无状态的。 Queue数据默认会在mq服务器上以文件形式保存,比如Active MQ一般保存在$AMQ_HOME\data\kr-store\data下面。也可以配置成DB存储。
完整性保障 并不保证publisher发布的每条数据,Subscriber都能接受到。 Queue保证每条数据都能被receiver接收。
消息是否会丢失 一般来说publisher发布消息到某一个topic时,只有正在监听该topic地址的sub能够接收到消息;如果没有sub在监听,该topic就丢失了。 Sender发送消息到目标Queue,receiver可以异步接收这个Queue上的消息。Queue上的消息如果暂时没有receiver来取,也不会丢失。
消息发布接收策略 一对多的消息发布接收策略,监听同一个topic地址的多个sub都能收到publisher发送的消息。Sub接收完通知mq服务器。 一对一的消息发布接收策略,一个sender发送的消息,只能有一个receiver接收。receiver接收完后,通知mq服务器已接收,mq服务器对queue里的消息采取删除或其他操作。

该段引用连接:

http://blog.csdn.net/lspj201007186/article/details/70176427

二、初始化环境

在此我们安装的是activemq5.14.5,activemq5.14.5使用的是jdk1.7。ActiveMQ 5.15.0使用的是jdk1.8。

安装jdk1.7,使用如下命令:

wget http://mirrors.linuxeye.com/jdk/jdk-7u80-linux-x64.tar.gz && tar -xf jdk-7u80-linux-x64.tar.gz -C /usr/local/ && chown root:root -R /usr/local/jdk1.7.0_80/

clip_image001

把jdk加入到环境变量,使用如下命令:

cat >> /etc/profile << “EOF”

export JAVA_HOME=/usr/local/jdk1.7.0_80

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

EOF

source /etc/profile

java -version

clip_image002

关闭防火墙和selinux、同步服务器时间,使用如下命令:

ntpdate -u cn.ntp.org.cn && sed -i ‘/SELINUX/s/enforcing/disabled/’ /etc/selinux/config && setenforce 0

systemctl disable firewalld.service && systemctl stop firewalld.service && shutdown -r now

clip_image003

三、下载、安装和启动activemq

打开activemq官网,如下:

http://activemq.apache.org/

clip_image004

3.1 下载activemq

打开activemq下载页面如下:

http://archive.apache.org/dist/activemq/

clip_image005

下载activemq5.14.5,并进行如下操作:

mkdir -p /usr/local/activemq

wget http://mirrors.hust.edu.cn/apache/activemq/5.14.5/apache-activemq-5.14.5-bin.tar.gz

tar -xf apache-activemq-5.14.5-bin.tar.gz -C /usr/local/activemq –strip-components 1

clip_image006

3.2 查看activemq目录结构

查看activemq的目录结构,使用如下命令:

ll

clip_image007

activemq-all-5.14.5.jar:activemq所有jar。

bin:activemq启动命令的二进制执行文件及一些命令脚本。

conf:activemq配置目录,包含最基本的activemq配置文件。

data:activemq数据目录,默认为空。包含activemq的进程文件、数据文件、日志文件。该目录也是activemq消息持久化的目录。

docs:用户使用帮助相关文件。

examples:操作activemq相关实例。

lib:activemq需要的类库。

webapps:activemq控制台应用目录。

webapps-demo:activemq使用实例目录。

LICENSE:ActiveMQ所有包使用的Apache开源消息协议。

NOTICEActiveMQ版权信息。

README:用户使用引导文件,包括一些文档及URL。

3.3 启动activemq

启动activemq,使用如下命令:

/usr/local/activemq/bin/activemq start

tail -f /usr/local/activemq/data/activemq.log

clip_image008

通过上图,我们可以很明显的看出activemq已经正常启动。

Activemq有三种启动方式,如下:

1)普通启动,命令如下:

/usr/local/activemq/bin/activemq start

2)后台启动并指定日志文件,命令如下:

nohup /usr/local/activemq/bin/activemq start >/tmp/smlog 2>&1

3)后台启动方式,命令如下:

nohup /usr/local/activemq/bin/activemq start

前两种方式下在命令行窗口关闭时或者ctrl+c时导致进程退出,采用后台启动方式则可以避免这种情况。

四、activemq管理控制台

Activemq默认的管理后台端口是8161,默认管理用户名和密码均是admin。

Activemq默认的管理后台端口,我们可以在activemq的配置文件jetty.xml中查看到,如下:

vim /usr/local/activemq/conf/jetty.xml +110

<property name=”port” value=”8161″/>

clip_image009

Activemq默认管理用户名和密码均是admin,如果我们要修改默认用户名和密码的话,可以通过修改jetty-realm.properties文件来达到目的。

vim /usr/local/activemq/conf/jetty-realm.properties

admin: ilanni, admin

user: user, user

clip_image010

值得注意的是activemq用户名和密码的格式是:

username: password, rolename

4.1 登陆管理控制台

现在登陆管理控制台,如下:

clip_image011

clip_image012

到此就已经说明activemq已经安装成功。

4.2 管理控制台介绍

在activemq的管理控制台,我们关注比较多的是Queues队列和Topics主题。

Queues队列选项,如下:

clip_image013

上述截图中:

Number Of Pending Messages:表示还有多少条消息没有被消费,实际上是表示消息的积压程度。

Number Of Consumers:表示在该队列上还有多少消费者在等待接受消息。其实就是消费者的数量。

Messages Enqueued:表示生产了多少条消息。

Messages Dequeued:表示消费了多少条消息。

Topics主题选项,如下:

clip_image014

上述截图中:

Number Of Consumers:表示在该队列上还有多少消费者在等待接受消息。

Messages Enqueued:表示生产了多少条消息。

Messages Dequeued:表示消费了多少条消息。

到此有关activemq的安装和配置就已经完毕了,下篇文章开始配置activemq集群。

未经允许不得转载:烂泥行天下 » 烂泥:ActiveMQ的安装与配置

赞 (15) 打赏

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

支付宝扫一扫打赏

微信扫一扫打赏