随笔记:ActiveMQ搭建与使用

下载

到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,它会提醒你的,哈哈)

cd ./apache-activemq-5.11.1-bin/bin
./activemq start

测试启动成功与否

ActiveMQ默认监听61616端口,查此端口看看是否成功启动

netstat -an|grep 61616

如果一切顺利,会看到如下日志

[[email protected] 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‘)
[[email protected] bin]$
[[email protected] bin]$
[[email protected] bin]$
[[email protected] bin]$ netstat -an | grep 61616
tcp        0      0 :::61616                    :::*                        LIST                                                                                                                                                             EN
[[email protected] bin]$

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

URL : http://10.0.0.109:8161/admin/

ACC/PWD : admin/admin

尝试基本消息功能

接下来,用简单的点对点测试消息发送、消息接收。

引入包:

  • activemq-client-5.11.1.jar
  • geronimo-j2ee-management_1.1_spec-1.0.1.jar
  • geronimo-jms_1.1_spec-1.1.1.jar
  • hawtbuf-1.11.jar
  • slf4j-api-1.7.10.jar

消息发送

package com.nicchagil.activemq.study.No001点对点;

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;

public class Sender {

    public static void main(String[] args) throws JMSException {
        ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "tcp://10.0.0.109:61616");
        Connection connection = factory.createConnection();
        connection.start();
        Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
        Destination destination = session.createQueue("TestQueue");
        MessageProducer producer = session.createProducer(destination);
        producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
        ObjectMessage message = session.createObjectMessage("hello world...");
        producer.send(message);
        session.commit();
        System.out.println("sent...");
    }

}

消息接收

package com.nicchagil.activemq.study.No001点对点;

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;

public class Receiver {

    public static void main(String[] args) throws JMSException {
        ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD,
                "tcp://10.0.0.109:61616");
        Connection connection = factory.createConnection();
        connection.start();
        Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
        Destination destination = session.createQueue("TestQueue");

        MessageConsumer consumer = session.createConsumer(destination);
        ObjectMessage message = (ObjectMessage)consumer.receive();
        if (message != null) {
            String messageString = (String)message.getObject();
            System.out.println("Receive : " + messageString);
        }
    }

}

看到console打印出:Receive : hello world...,可知接收到消息了,内流满面啊啊啊啊。。。

关闭

查询进程id(pid),禁止其进程:

ps -ef | grep activemq
kill -9 pid

再运行Sender,她就无法连接了,哈哈哈哈哈

Exception in thread "main" javax.jms.JMSException: Could not connect to broker URL: tcp://10.0.0.109:61616. Reason: java.net.ConnectException: Connection refused: connect

好了,基本的搭建告一段落。

荆棘

过程中,遇到一个小问题,就是我一开始是用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了。

时间: 2024-10-11 13:31:05

随笔记:ActiveMQ搭建与使用的相关文章

Hadoop学习笔记(4) ——搭建开发环境及编写Hello World

Hadoop学习笔记(4) ——搭建开发环境及编写Hello World 整个Hadoop是基于Java开发的,所以要开发Hadoop相应的程序就得用JAVA.在linux下开发JAVA还数eclipse方便. 下载 进入官网:http://eclipse.org/downloads/. 找到相应的版本进行下载,我这里用的是eclipse-SDK-3.7.1-linux-gtk版本. 解压 下载下来一般是tar.gz文件,运行: $tar -zxvf eclipse-SDK-3.7.1-linu

[terry笔记]11gR2_DataGuard搭建_拷贝数据文件

11gR2搭建dataguard环境: 自己做的实验,后续按照rman模式搭建.主备切换.模式调整等实验会陆续发上来. primary: OS:oel 6.4 database:11.2.0.4.0 192.168.100.131 hostname=node4 ORACLE_SID=good ORACLE_HOME=/u01/product/11.2.0 db_unique_name=good standby: OS:oel 6.4 database:11.2.0.4.0 192.168.100

学习笔记---springMVC搭建

最近工作不是很忙,写项目总结总结学习和工作中的技术,标记... 我的环境配置: 操作系统 win 7 开发工具 STS web服务器 tomcat7 java jdk1.6 1. 项目的创建,我是参考下面这篇文章 http://fruzenshtein.com/setup-of-dynamic-web-project-using-maven/ 2. 相关jar包的引入 pom.xml中spring的配置 1 <properties> 2 <org.springframework-vers

shell 脚本实战笔记(5)--搭建资源的镜像服务器

背景: 由于访问国外站点资源, 有时特别慢. 偶尔一次下载, 肯定还能忍受, 对于多次使用或者小团队内部使用, 搭建一个镜像站点, 无疑是个明智的决定. 这边以搭建CDH5的yum源镜像, 作为例子, 具体阐述如何借助apache2搭建一个目录镜像服务, 以及如何复制站点资源. 1) 搭建apache2服务器*) 安装apache2yum install httpdyum info httpd *) 确认配置项/etc/httpd/conf/httpd.conf DocumentRoot "/v

Hadoop学习笔记(10) ——搭建源码学习环境

Hadoop学习笔记(10) ——搭建源码学习环境 上一章中,我们对整个hadoop的目录及源码目录有了一个初步的了解,接下来计划深入学习一下这头神象作品了.但是看代码用什么,难不成gedit?,单步调试呢? 看程序不能调那多痛苦啊,想看跟踪一下变量,想看一下执行路径都难. 所以这里,我们得把这个调试环境搭建起来.Hadoop的主要代码是用java编写的,所以这里就选用eclipse作为环境. Hadoop目录下,本身就可以为作eclipse的一个工程来操作,但这里我不想,我想自己来建一个工程,

DirectX10学习笔记&lt;01&gt; 搭建环境-在Visual Studio中配置DirectX

一.工具下载 IDE:Visual Studio 2008 SDK:DirectX SDK,可以从Microsoft的网站上免费下载到.SDK中还包含示例.工具和文档.自带的工具很有用,我们会经常使用其中的DDS纹理工具. 二.设置Visual Studio 2008 菜单栏->Tools->Options... 左边选择Projects and Solutions->VC++ Directories 右边Show directiories for:选择Include files,往下列

VS2013中Python学习笔记[环境搭建]

前言 Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构. Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节.类似于PHP和Perl语言. Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序. Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的

NuGet学习笔记(3) 搭建属于自己的NuGet服务器

文章导读 创建NuGetServer Web站点 发布站点到IIS 添加本地站点到包包数据源 在上一篇NuGet学习笔记(2) 使用图形化界面打包自己的类库 中讲解了如何打包自己的类库,接下来进行最重要的一步,从零开始搭建属于自己的NuGet服务器,诚然园子里及其它很多地方已经有完全写好的NuGet服务源码,我们只需要拿来发布一下就ok了,运行也很正常,但作为一名合格的程序猿,不建议这种拿来主义尤其时你自己可以搞定的时候,用别人写好的东西总有些心里不踏实,当有一天它出问题了你的悲剧就开始了,下面

NuGet学习笔记3——搭建属于自己的NuGet服务器

文章导读 创建NuGetServer Web站点 发布站点到IIS 添加本地站点到包包数据源 在上一篇NuGet学习笔记(2) 使用图形化界面打包自己的类库 中讲解了如何打包自己的类库,接下来进行最重要的一步,从零开始搭建属于自己的NuGet服务器,诚然园子里及其它很多地方已经有完全写好的NuGet服务源码,我们只需要拿来发布一下就ok了,运行也很正常,但作为一名合格的程序猿,不建议这种拿来主义尤其时你自己可以搞定的时候,用别人写好的东西总有些心里不踏实,当有一天它出问题了你的悲剧就开始了,下面