下载

到ActiveMQ官网,找到下载点。

目前,

官网为http://activemq.apache.org/。

我们下载目前最新的版本吧,当前的Linux版本下载地址之一为:http://apache.fayea.com/activemq/5.11.1/apache-activemq-5.11.1-bin.tar.gz。

启动

下载,并解压

wget http://apache.fayea.com/activemq/5.11.1/apache-activemq-5.11.1-bin.tar.gz
tar -xf ./apache-activemq-5.11.1-bin.tar.gz

启动(当然,由于依赖于JAVA,如果你没有安装JAVA,它会提醒你的,哈哈)

[nicchagil@localhost bin]$ ./activemq start
INFO: Loading '/home/nicchagil/app/apache-activemq-5.11.1/bin/env'
INFO: Using java '/home/nicchagil/app/jdk1.7.0_71//bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and log4j.prop                                                                                                                                                             erties to get details
INFO: pidfile created : '/home/nicchagil/app/apache-activemq-5.11.1/data/activem                                                                                                                                                             q.pid' (pid '4858')

测试启动成功与否

ActiveMQ默认监听61616端口,查此端口看看是否成功启动,如果一切顺利,会看到如下日志

[nicchagil@localhost bin]$ netstat -an | grep 61616
tcp        0      0 :::61616                    :::*                        LIST                                                                                                                                                             EN

顺便,登录下管理员页面,看看有木有问题:

URL : http://192.168.1.101:8161/admin/

默认的用户名/密码 : admin/admin

Java客户端连接

接下来,用简单的点对点测试生产消息、消费消息。

引入所需包

<dependencies><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-client</artifactId><version>5.11.1</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.25</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency>
</dependencies>

生产消息

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Session;import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.log4j.Logger;public class Producer {private static final Logger LOG = Logger.getLogger(Producer.class);public static void main(String[] args) {// 获取连接工厂ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "tcp://192.168.1.101:61616");/* 获取连接 */Connection connection = null;try {connection = factory.createConnection();connection.start();} catch (JMSException e) {LOG.error("获取连接出现异常", e);}/* 创建会话 */Session session = null;try {session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);} catch (JMSException e) {LOG.error("创建会话出现异常", e);}/* 创建消息生产者 */Destination destination = null;try {destination = session.createQueue("TestQueue");} catch (JMSException e) {LOG.error("创建队列出现异常", e);}/* 创建队列 */MessageProducer producer = null;try {producer = session.createProducer(destination);producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);} catch (JMSException e) {LOG.error("创建消息生产者出现异常", e);}/* 发送消息 */ObjectMessage message = null;try {message = session.createObjectMessage("hello world...");producer.send(message);} catch (JMSException e) {LOG.error("发送消息出现异常", e);}try {session.commit();} catch (JMSException e) {LOG.error("提交会话出现异常", e);}if (connection != null) {try {connection.close();} catch (JMSException e) {LOG.error("关闭连接出现异常", e);}}LOG.info("sent...");}}

消费消息

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.ObjectMessage;
import javax.jms.Session;import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.log4j.Logger;public class Consumer {private static final Logger LOG = Logger.getLogger(Consumer.class);// 是否继续响应,可按需由其他逻辑修改值,true:继续响应,false-停止响应public static volatile boolean handleFlag = true;public static void main(String[] args) {// 获取连接工厂ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "tcp://192.168.1.101:61616");/* 获取连接 */Connection connection = null;try {connection = factory.createConnection();connection.start();} catch (JMSException e) {LOG.error("获取连接出现异常", e);}/* 创建会话 */Session session = null;try {session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);} catch (JMSException e) {LOG.error("创建会话出现异常", e);}/* 创建消息生产者 */Destination destination = null;try {destination = session.createQueue("TestQueue");} catch (JMSException e) {LOG.error("创建队列出现异常", e);}/* 创建消费者 */MessageConsumer consumer = null;try {consumer = session.createConsumer(destination);} catch (JMSException e) {LOG.error("创建消费者出现异常", e);}/* 获取消息对象 */ObjectMessage objectMessage = null;while(handleFlag) {try {objectMessage = (ObjectMessage)consumer.receive();handleMessage(objectMessage);} catch (JMSException e) {LOG.error("接收消息出现异常", e);}}if (connection != null) {try {connection.close();} catch (JMSException e) {LOG.error("关闭连接出现异常", e);}}}/*** 处理消息对应的业务* @param objectMessage 消息对象*/public static void handleMessage(final ObjectMessage objectMessage) {if (objectMessage == null) {return;}/* 处理业务 */Object object = null;try {object = objectMessage.getObject();} catch (JMSException e) {LOG.error("获取消息内容出现异常", e);}handleMessage(object);}/*** 处理消息对应的业务* @param messageString 消息内容*/public static void handleMessage(Object object) {if (object == null) {return;}String messageString = (String)object;LOG.info("Receive : " + messageString); // 这里仅作打印业务而已
    }}

看到控制台打印出:Receive : hello world...,可知接收到消息了。

集群的安装(Replicated LevelDB Store)

ActiveMQ的集群有3种类型,介绍在此Introduction to Master / Slave,我们下面使用的是Replicated LevelDB Store。

编辑配置文件/home/activemq/conf/activemq.xml,编辑以下块:

        <persistenceAdapter><replicatedLevelDBdirectory="activemq-data"replicas="3"bind="tcp://0.0.0.0:0"zkAddress="xx.xx.xx.xx:xxxx,xx.xx.xx.xx:xxxx,xx.xx.xx.xx:xxxx(zookeeper集群)"zkPassword="zk password"zkPath="/activemq/leveldb-stores"hostname="当前机器IP"/></persistenceAdapter>

其它节点也如此配置。

启动,查看日志是否正常启动。

荆棘

JDK版本的要求

过程中,遇到一个小问题,就是我一开始是用JDK1.6去跑的,报出常见的Unsupported major.minor version 51.0

针对这个问题,这个帖子有很好的参考意义:

http://www.cnblogs.com/chinafine/articles/1935748.html

找出jar中的一个class,执行以下命令,可查出minor version、major version:

javap -verbose yourClassName

或直接查看jar中的META-INF\MANIFEST.MF。

然后对照帖子中的JDK版本,换成JDK1.7就OK了。

【ActiveMQ】ActiveMQ在CentOS的搭建与使用相关推荐

  1. ActiveMQ此例简单介绍基于docker的activemq安装与集群搭建

    ActiveMQ拓展连接 此例简单介绍基于Docker的activemq安装与集群搭建 一 :安装 1.获取activemq镜像 docker pull webcenter/activemq 2.启动 ...

  2. CentOs上搭建git服务器

    CentOs上搭建git服务器 首先安装setuptools wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0 ...

  3. Centos 7 搭建DNS正向解析和反向解析

    Centos 7  搭建DNS正向解析和反向解析服务的三要素:安装-配置-启动  1.使用yum安装DNS  yum  install  bind -y  2.修改配置文件       vi /etc ...

  4. CentOs下搭建GitLab

    CentOs下搭建GitLab gitlab提供ce 和 ee两个版本,从官网的解释来看,如果想体验完整的功能则安装ee版并付费,不然体验时间过后ee版将自动降级为ce版,所以看个人需求安装.二者的区 ...

  5. centos下搭建Jenkins持续集成环境(安装jenkins)

    centos下搭建Jenkins持续集成环境(安装jenkins) 1.安装JDK yum install -y java 2.安装jenkins 添加Jenkins库到yum库,Jenkins将从这 ...

  6. linux7 dns正向,Centos 7 搭建DNS正向解析和反向解析

    Centos 7 搭建DNS正向解析和反向解析 服务的三要素:安装-配置-启动 1.使用yum安装DNS yum install bind -y 2.修改配置文件 vi /etc/named.conf ...

  7. linux 下搭建subversion (svn),CentOS Linux 搭建 SVN(CollabNet Subversion)服务器,易用性和对远程团队的...

    CentOS Linux 搭建 SVN(CollabNet Subversion)服务器,易用性和对远程团队的 Subversion® 是需要在各个地方共享源代码的全球分布式组织进行版本控制和软件配置 ...

  8. Linux、CentOS简单搭建虚拟主机

    Linux.CentOS简单搭建虚拟主机(仅供参考) 1.       基于域名的虚拟主机 a.       新建目录/usr/local/webapps/123 b.       在123目录下面新 ...

  9. CentOS下搭建测试WEB平台

    CentOS下搭建测试WEB平台 LAMP MYSQL 下载免编译的软件包 cd /usr/local/src wget http://mirrors.sohu.com/mysql/MySQL-5.1 ...

  10. CentOS 服务器搭建 mediawiki

    CentOS 服务器搭建 mediawiki 具体安装步骤参见:本地安装mediawiki 两个不同点如下: 一.数据库:SQLite 1.选择SQLite做服务器有两个原因: -- 1.轻量服务器, ...

最新文章

  1. resize函数_每日一题手写函数防抖与节流
  2. cinder块存储配置使用lvm
  3. Quartus prime16.0 与modelsim ae 联调
  4. 沉浸式全息本是什么_够炫酷!联想全息教学设备,构建沉浸式教学场景
  5. python教程七牛云_python-django框架中使用七牛云
  6. learning rate 学习速率
  7. optparse的模块编译参数使用
  8. MVC路由 路由的三种扩展 替换MVC内置的Handler
  9. UniDrop:一种简单而有效的Transformer提升技术
  10. [Android] Android 任务栈 【转载】
  11. visio2013激活软件
  12. OpenCV-RGB转HSV
  13. IT行业基础知识:什么是互联网+
  14. 【Java】简述断言(assert)的使用以及使用场景
  15. 每天一点数据库之-----Day 9 表连接
  16. 计算机编程语言排行榜—TIOBE世界编程语言排行榜(2020年3月份最新版)
  17. 记录《自己动手写网络爬虫 》书中涉及的内容学习一些算法
  18. pdf怎么去除保护限制,pdf权限限制怎么解除?
  19. 用java实现批量下载百度云中的音乐
  20. 图像分类/识别 ResNet

热门文章

  1. 一本好书-《精益创业》
  2. Linux 如何将eth1网卡修改为eth0
  3. bootstrap treetable 树形网格,动态扩展,连数据库
  4. 虚拟软件VMware workstation安装
  5. 关于学习C语言的指针、链表的原理和各类操作的体会
  6. Unity Heathaze shader
  7. Linux中telnet命令
  8. CactiEZ中文版10.1与CAS单点登录
  9. Linux 下获取 IP 和 MAC Adr 的方法
  10. Windows 启动方式总结(转)